繁体   English   中英

为什么regex.exec()返回类型是布尔值?

[英]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的结果,所以是!==的结果(应该为truefalse )。

换句话说, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM