有人能解释一下为什么下面的JavaScript代码中的alert()
会触发吗?这似乎是RegExp.test()
方法中的一个错误,每次您运行该方法时,该方法都会改变其先前的决定。我使用的是IE7。
我找到了一个看起来可靠的替代方法,使用的是string.search(regex)
方法。但是,我很好奇是否有人对此有所了解。
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!");
}
发布于 2009-05-21 19:36:17
您的正则表达式设置了全局(g
)标志。每次执行时,它都会更新一个内部索引( lastIndex属性),指定它离开的位置,并在下一次执行时从该位置开始搜索。
当然,您并不是真的想要这样--您希望每次都从头开始。因此,丢弃g
标志。
发布于 2009-05-21 19:37:41
在这种情况下,您无论如何都需要一个全局标记,因为在css声明中,一个属性应该只声明一次。
https://stackoverflow.com/questions/894696
复制相似问题