Regex返回空字符空间和未定义的



我正在尝试获取一个字符串数组,其中包含带in的双引号。

let str = `He is a "man of his" words always "single quote"`;
console.log(str);
let re5 = /((["]).*?2|S+)/g;
let abc = str3.split(re4);
console.log(abc);

预期结果,['He','is','a','"他的男人"','words','always\','"单引号"']

但我得到

['','He',未定义,'','是',未定义,'',"a",未定义,'',"他的男人",'"','','单词',未定义,'',"始终",未定义,'','"单引号"','"','']

需要更正上述regex的帮助,我不知道这个空字符串空间和未定义的原因。

要么匹配",最后再匹配",要么匹配一个或多个非空格字符:

let str = `He is a "man of his" words always "single quote"`;
console.log(str.match(/"[^"]+"|S+/g));

当您有split的捕获组时,每个捕获组都会包含在结果中。您有两个捕获组,因此对于每一场比赛,都会包括这些组中的项目。(如果捕获组在一个特定的匹配中根本不匹配,则结果为undefined——例如,当捕获组处于一个交替中,但模式遵循另一个时,就会发生这种情况。(无论如何,使用.match要容易得多。

最新更新