当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[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)
可能重复:
Javascript RegExp的有趣测试
正则表达式测试无法在true和false之间做出决定(JavaScript)
问题的例子.在内联运行时,结果如我所料.但是当存储为变量时,它会跳过中间跨度元素.
// Inline RegExp
function getToggleClasses() {
var toggler = [],
elements = document.getElementsByTagName("*"),
i=0,
len = elements.length;
for (i; i < len; i++) {
if (/toggler/g.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}
// Variable
function getToggleClasses2() {
var toggler = [],
elements = document.getElementsByTagName("*"),
tester = /toggler/g,
i=0,
len = elements.length;
for (i; i < len; i++) {
if (tester.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Variable: …Run Code Online (Sandbox Code Playgroud) > var p = /abc/gi;
> var s = "abc";
> p.test(s);
true
> p.test(s);
false;
Run Code Online (Sandbox Code Playgroud)
当我在Chrome控制台上运行此代码时,我在上面输出了此输出.每次我调用'.test()',我都会得到不同的价值.有人可以向我解释为什么会这样吗?谢谢