正则表达式测试不能在true和false之间做出决定(JavaScript)

前端之家收集整理的这篇文章主要介绍了正则表达式测试不能在true和false之间做出决定(JavaScript)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Chrome(开发人员工具)和Firefox(Firebug)中都有这种行为.请注意,正则表达式测试返回交替的true / false值:

> 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会这样做,是的.

this question.

当您编写文字时,每次都会获得一个新的正则表达式对象,因此丢失与旧对象关联的lastIndex状态.

猜你在找的正则表达式相关文章