var re = /null/g;
re.test('null null');
//> true
re.test('null null');
//> true
re.test('null null');
//> false
什么!?!?
我尝试在Chrome,Firefox,Safari中进行测试。 使用RegExp构造函数的正则表达式,但无济于事。
为什么会这样?
答案 0 :(得分:4)
全局正则表达式(使用g
标志的表达式)是特殊的。如果多次在同一个字符串上调用它们,它们会搜索连续的匹配项。由于您的测试字符串恰好包含null
的两个匹配项,因此第三次调用RegExp#test
会返回false
(无法找到连续的第三个匹配项)。
要解决此问题,您可以放弃g
标记,如下所示:
var re = /null/
console.log(re.test('null null')) //=> true
console.log(re.test('null null')) //=> true
console.log(re.test('null null')) //=> true

答案 1 :(得分:0)
我会更多地考虑这个,以弄清楚为什么会这样。但你应该删除" g"来自你的正则表达式。这是不必要的,并将解决问题。