Javascript 和正则表达式:未定义和“”
Javascript and Regex: undefined and ""
我不太熟悉正则表达式,我遇到了以下问题:
当 运行 正则表达式拆分我的字符串时,我得到很多未定义和 "" 以及结果。我已经尝试使用“(?:”,这是我在 Whosebug 的另一个答案中看到的以及许多其他内容。
然后我使用 array.filter 函数删除它们,但我不想那样做。谁能帮我? (并向我解释为什么会这样)。
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"",")"]
谢谢!
原因是每个备选方案都在其自己的捕获组中。只有真正匹配的捕获组才会被填入,其余为空。相反,将捕获组放在所有备选方案周围。
line = "#include <stdio.h>";
let values = line.split(/(\!=|<=|>=|==|\/\/|\/\*|\*\/|"|=|<|>|\+|-|\*|\|\(|\)|;| )/g);
console.log(values);
我不太熟悉正则表达式,我遇到了以下问题:
当 运行 正则表达式拆分我的字符串时,我得到很多未定义和 "" 以及结果。我已经尝试使用“(?:”,这是我在 Whosebug 的另一个答案中看到的以及许多其他内容。 然后我使用 array.filter 函数删除它们,但我不想那样做。谁能帮我? (并向我解释为什么会这样)。
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"",")"]
谢谢!
原因是每个备选方案都在其自己的捕获组中。只有真正匹配的捕获组才会被填入,其余为空。相反,将捕获组放在所有备选方案周围。
line = "#include <stdio.h>";
let values = line.split(/(\!=|<=|>=|==|\/\/|\/\*|\*\/|"|=|<|>|\+|-|\*|\|\(|\)|;| )/g);
console.log(values);