var re = /null/g;
re.test('null null');
//> true
re.test('null null');
//> true
re.test('null null');
//> false
什么!?!?
我尝试在Chrome,Firefox,Safari中进行测试。用RegexP构造函数使用的Regex,但无济于事。
为什么会发生这种情况?
js bin带有其他演示
全局正则表达式(使用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
我会考虑更多,以弄清楚为什么会发生这种情况。但是您应该从正则删除" G"。这是不必要的,可以解决问题。