首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么JavaScript RegExp.test()方法的行为类似于切换?

为什么JavaScript RegExp.test()方法的行为类似于切换?
EN

Stack Overflow用户
提问于 2009-05-21 19:32:41
回答 2查看 5K关注 0票数 19

有人能解释一下为什么下面的JavaScript代码中的alert()会触发吗?这似乎是RegExp.test()方法中的一个错误,每次您运行该方法时,该方法都会改变其先前的决定。我使用的是IE7。

我找到了一个看起来可靠的替代方法,使用的是string.search(regex)方法。但是,我很好奇是否有人对此有所了解。

代码语言:javascript
复制
  var styleHasWidthRegex = /\bwidth\s*\:/ig;
  var styleText = "WIDTH: 350px";
  var result1 = styleHasWidthRegex.test(styleText);
  var result2 = !styleHasWidthRegex.test(styleText);
  if (result1 == result2) {
    alert("This should never happen!");
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-21 19:36:17

您的正则表达式设置了全局(g)标志。每次执行时,它都会更新一个内部索引( lastIndex属性),指定它离开的位置,并在下一次执行时从该位置开始搜索。

当然,您并不是真的想要这样--您希望每次都从头开始。因此,丢弃g标志。

另请参阅:Inconsistent javascript logic behavior

票数 45
EN

Stack Overflow用户

发布于 2009-05-21 19:37:41

在这种情况下,您无论如何都需要一个全局标记,因为在css声明中,一个属性应该只声明一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/894696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档