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

时间:2017-04-29 18:38:32

标签: javascript regex return-type

我对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);
    }
}

2 个答案:

答案 0 :(得分:4)

由于arr不是exec的结果,而是!==的结果(应该是true或{{1} }})。

换句话说,false解析为x = y !== z,而不是x = (y !== z)

你可能打算写

(x = y) !== z

代替。

答案 1 :(得分:0)

您应该在while循环中添加一对括号:

&#13;
&#13;
function matchHTMLsymbols(str) {
  var pattern = /&|<|>|"|' /g,
      arr;
      
  while (((arr = pattern.exec(str)) !== null)) {
    console.log(arr);
  }
}

matchHTMLsymbols('foo<bar"baz&');
&#13;
&#13;
&#13;