当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[true,true].
var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
result.push(re.test('Foo Bar'));
// result will be [true, false]
Run Code Online (Sandbox Code Playgroud)
var reg = /^a$/g;
for(i = 0; i++ < 10;)
console.log(reg.test("a"));Run Code Online (Sandbox Code Playgroud)
我的代码类似于对象数组中的此过滤条目:
var filterRegex = new RegExp(".*blah.*","ig");
if (filterRegex.test(events[i].thing) && events[i].show) {
console.log("SUCCESS: filtering thing " + i + " " + events[i].thing);
events[i].show = false;
numevents--;
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果与if if条件不一致(用Firebug检查,两个条件都是单独的,但有时整个表达式的计算结果为false).但是,如果我实际上alert()在这个if语句中放入一个调用(如第4行),它会变得一致,我得到我想要的结果.
你能看出这个逻辑有什么问题,并告诉我为什么它并不总能产生预期的东西?