[英]Why is regex.exec() return type is a boolean?
我对javascript很陌生,正则表达式有问题
根据此文档页面,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);
}
}
因为arr
不是exec
的结果,所以是!==
的结果(应该为true
或false
)。
换句话说, x = y !== z
解析为x = (y !== z)
而不是(x = y) !== z
。
你可能想写
while ((arr = pattern.exec(str)) !== null) {
代替。
您应该在while
循环中添加一对括号:
function matchHTMLsymbols(str) { var pattern = /&|<|>|"|' /g, arr; while (((arr = pattern.exec(str)) !== null)) { console.log(arr); } } matchHTMLsymbols('foo<bar"baz&');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.