Javascript和正则表达式:未定义和&引用;

Javascript和正则表达式:未定义和&引用;,javascript,regex,regex-group,Javascript,Regex,Regex Group,我不太熟悉正则表达式,我有以下问题: 当运行regExp分割字符串时,我会得到很多未定义的和“”以及结果。我已经试过使用“(?:”,我在stackoverflow和其他很多东西中看到了另一个答案。 然后我使用array.filter函数删除它们,但我不想这样做。有人能帮我吗?(并向我解释为什么会发生这种情况) 谢谢!原因是您在自己的捕获组中有每个备选方案。只有实际匹配的捕获组将被填充,其余的将为空。相反,将捕获组放在所有备选方案周围 line=“#包括”; 让值=line.split(/(\!

我不太熟悉正则表达式,我有以下问题:

当运行regExp分割字符串时,我会得到很多未定义的和“”以及结果。我已经试过使用“(?:”,我在stackoverflow和其他很多东西中看到了另一个答案。 然后我使用array.filter函数删除它们,但我不想这样做。有人能帮我吗?(并向我解释为什么会发生这种情况)


谢谢!

原因是您在自己的捕获组中有每个备选方案。只有实际匹配的捕获组将被填充,其余的将为空。相反,将捕获组放在所有备选方案周围

line=“#包括”;
让值=line.split(/(\!=|=|=|/\/\/\************/)/g);

console.log(values);
你想实现什么?我刚刚编辑了它:)我把它改为:let values=line.split(/(\!=)==========/\/\/\/*****/)/g);我检查它只返回“”字符,但它也返回“”,你知道为什么会发生这种情况吗?返回值:[“#include”、“”、“”、“”、“”、“”、“”、“”、“”、“”]如果一行中有两个分隔符,则返回它们之间的空字符串。如果字符串以分隔符开头或结尾,则返回其前面或后面的空字符串。
let values = line.split(/(\!=)|(<=)|(>=)|(==)|(\/\/)|(\/\*)|(\*\/)|(")|(=)|(<)|(>)|(\+)|(-)|(\*)|(\\)|(\()|(\))|;| /g);

return values.filter(value => {
    return value !== undefined && value !== "";
});
"int x = 7;" => ["int","x","=","7",";"]

"int x = 7 + 25 * 52" => ["int","x","=","7","+","25","*","52"]

"while( x != 0)" => ["while","(","x","!=","0",")"]

'if(idade > 70 && sexo == "masculino")' 
    => ["if","(","idade",">","70","&&","sexo","==",""masculino"",")"]