Ger*_*ers 3 javascript regex return-type
我对 javascript 很陌生,并且在 regex 上有问题
根据这个文档页面,如果没有匹配项,regex.exec() 函数应该返回一个数组或 null。
如果匹配成功,exec() 方法返回一个数组并更新正则表达式对象的属性。返回的数组将匹配的文本作为第一项,然后是每个匹配的捕获括号的一项,其中包含捕获的文本。如果匹配失败,exec() 方法返回 null。
为什么然后在我的代码,EXEC()的结果可以是一个布尔值或空?
function matchHTMLsymbols(str)
var pattern = /&|<|>|"|' /g;
var arr;
while ((arr = pattern.exec(str) !== null)) {
console.log(arr);
}
}
Run Code Online (Sandbox Code Playgroud)
因为arr不是 的结果exec,而是!==(应该是true或false)的结果。
换句话说,x = y !== z解析为x = (y !== z),而不是(x = y) !== z。
你可能想写
while ((arr = pattern.exec(str)) !== null) {
Run Code Online (Sandbox Code Playgroud)
反而。