为什么我的JavaScript regex.test()给交替结果

可能重复:
Javascript的正则expression式返回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修饰符来解决我遇到的问题。 不过,我仍然想明白为什么会发生这种情况。

当你使用/g ,正则expression式对象将在调用之间保存状态(因为你应该使用它来匹配多个调用)。 它匹配一次,但后来的电话从原始匹配后开始。

(这是一个JavaScript正则expression式的复制返回true ..然后false ..然后真..等 )