这个问题在这里已有答案:
可能重复:Javascript正则表达式返回true ..然后为false ..然后为true ..等等
var r = /\d/g;
var a = r.test("1"); // will be true
var b = r.test("1"); // will be false
console.log(a == b); // will be false
请解释为什么 r.test("1")
的结果与每个电话交替?
通过删除g修饰符,我能够解决我遇到的问题 . 但是,我仍然想了解为什么会发生这种情况 .
1 回答
当您使用
/g
时,正则表达式对象将在调用之间保存状态(因为您应该使用它来匹配多个调用) . 它匹配一次,但后续调用从原始匹配开始 .(这是Javascript regex returning true.. then false.. then true.. etc的副本)