为什么我的javascript regex.test()给出了交替的结果

时间:2010-05-17 17:35:07

标签: javascript regex

  

可能重复:
  Javascript regex returning true.. then false.. then true.. etc

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 个答案:

答案 0 :(得分:93)

当您使用/g时,正则表达式对象将在调用之间保存状态(因为您应该使用它来匹配多个调用)。它匹配一次,但后续的呼叫从原始匹配开始。

(这是Javascript regex returning true.. then false.. then true.. etc

的副本