Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的javascript regex.test()会给出交替的结果_Javascript_Regex - Fatal编程技术网

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

为什么我的javascript regex.test()会给出交替的结果,javascript,regex,Javascript,Regex,可能重复: 请向我解释为什么r.test(“1”)的结果在每次调用时交替出现 我可以通过移除g修饰符来解决我遇到的问题。但是我仍然想理解为什么会发生这种情况。当您使用/g时,regex对象将在调用之间保存状态(因为您应该使用它来匹配多个调用)。它匹配一次,但后续调用从原始匹配后开始 (这是的副本)谢谢!我发现了一些更详细的解释。test基本上是.exec()的简写形式null,它是.exec(),用于存储下一次调用的最后索引。()奇怪的是,即使为每个调用指定不同的字符串,也会发生相同的情况。如

可能重复:

请向我解释为什么
r.test(“1”)
的结果在每次调用时交替出现


我可以通过移除g修饰符来解决我遇到的问题。但是我仍然想理解为什么会发生这种情况。

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


(这是的副本)

谢谢!我发现了一些更详细的解释。test基本上是.exec()的简写形式null,它是.exec(),用于存储下一次调用的最后索引。()奇怪的是,即使为每个调用指定不同的字符串,也会发生相同的情况。如果在不同的字符串上调用lastIndex,是否不会重置它?否,因为
lastIndex
是正则表达式的属性,而不是字符串。相比之下,在Perl中,它与字符串(
pos
属性)关联,而在Java中,它由Matcher对象维护
lastIndex
令人沮丧:浪费我的生命调试这件奇怪的事情……我花了2天时间调试一个服务人员,该服务人员基于/./g regexp随机缓存资产。现在解释了原因。
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