Javascript 使用/null/g.test(';null';)时出现意外的正则表达式行为

Javascript 使用/null/g.test(';null';)时出现意外的正则表达式行为,javascript,regex,null,Javascript,Regex,Null,什么 我试着在Chrome、Firefox和Safari中进行测试。 将regex与RegExp构造函数一起使用,但无效 为什么会这样 全局正则表达式(使用g标志的)是特殊的。如果在同一字符串上多次调用它们,它们将搜索连续的匹配项。由于测试字符串正好包含两个与null匹配的项,因此对RegExp\test的第三次调用返回false(一行中找不到第三个匹配项) 要解决此问题,可以放弃g标志,如下所示: var re=/null/ console.log(重新测试('null'))/=>true

什么

我试着在Chrome、Firefox和Safari中进行测试。 将regex与RegExp构造函数一起使用,但无效

为什么会这样


全局正则表达式(使用
g
标志的)是特殊的。如果在同一字符串上多次调用它们,它们将搜索连续的匹配项。由于测试字符串正好包含两个与
null
匹配的项,因此对
RegExp\test
的第三次调用返回
false
(一行中找不到第三个匹配项)

要解决此问题,可以放弃
g
标志,如下所示:

var re=/null/
console.log(重新测试('null'))/=>true
console.log(重新测试('null'))/=>true

console.log(re.test('null'))/=>true
我将进一步考虑这个问题,以找出发生这种情况的原因。但是您应该从正则表达式中删除“g”。这是不必要的,可以解决问题。

Hmm,gyre beat将是一个非常有用的答案。
var re = /null/g;

re.test('null null');
//> true

re.test('null null');
//> true

re.test('null null');
//> false