Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
正则表达式测试可以';t判断正确与否(JavaScript)_Javascript_Regex - Fatal编程技术网

正则表达式测试可以';t判断正确与否(JavaScript)

正则表达式测试可以';t判断正确与否(JavaScript),javascript,regex,Javascript,Regex,我在Chrome(开发者工具)和Firefox(Firebug)中都有这种行为。注:正则表达式测试返回交替的真/假值: > var re = /.*?\bbl.*\bgr.*/gi; undefined > re /.*?\\bbl.*\\bgr.*/gi > re.test("Blue-Green"); true > re.test("Blue-Green"); false > re.test("Blue-Green"); true > re.test("B

我在Chrome(开发者工具)和Firefox(Firebug)中都有这种行为。注:正则表达式测试返回交替的真/假值:

> var re = /.*?\bbl.*\bgr.*/gi;
undefined
> re
/.*?\\bbl.*\\bgr.*/gi
> re.test("Blue-Green");
true
> re.test("Blue-Green");
false
> re.test("Blue-Green");
true
> re.test("Blue-Green");
false
但是,将同一个正则表达式作为文本进行测试:

> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
我无法解释这一点,这使得调试非常困难。有人能解释这种行为吗?

/g
(全局)regexps会这样做,是的


编写文本时,每次都会得到一个新的regexp对象,因此会丢失与旧对象关联的
lastIndex
状态。

Funky。复制了Firefox 3.5.8和Firebug 1.5.3。如果将“蓝绿色”存储到变量中并重复使用,仍然会发生。我觉得这有点有趣。而不是使用
a=!要在真/假之间切换,为什么不定义一个私有regexp对象并使用
regexp.test它在ECMAScript规范中定义为这样的行为,在所有浏览器中都是一样的。如果不使用/g Edit,则停止:啊,答案说明原因;)JavaScript
RegExp
接口没有任何意义!真正的WTF是全局
RegExp
构造函数对象上反映上次匹配的属性。。。啊。