我对javascript很新,并且在正则表达式上有问题 根据{{3}}文档页面,regex.exec()函数应该返回一个数组,如果没有匹配则返回null。
如果匹配成功,exec()方法返回一个数组并更新正则表达式对象的属性。返回的数组将匹配的文本作为第一个项目,然后为匹配的每个捕获括号中的一个项目包含捕获的文本。 如果匹配失败,则exec()方法返回null。
为什么然后在我的代码中,exec()的结果是布尔或 null ?
function matchHTMLsymbols(str)
var pattern = /&|<|>|"|' /g;
var arr;
while ((arr = pattern.exec(str) !== null)) {
console.log(arr);
}
}
答案 0 :(得分:4)
由于arr
不是exec
的结果,而是!==
的结果(应该是true
或{{1} }})。
换句话说,false
解析为x = y !== z
,而不是x = (y !== z)
。
你可能打算写
(x = y) !== z
代替。
答案 1 :(得分:0)
您应该在while
循环中添加一对括号:
function matchHTMLsymbols(str) {
var pattern = /&|<|>|"|' /g,
arr;
while (((arr = pattern.exec(str)) !== null)) {
console.log(arr);
}
}
matchHTMLsymbols('foo<bar"baz&');
&#13;