您的位置:首页 > Web前端 > JavaScript

js 正则test问题

2010-09-18 12:53 127 查看
var reg=/a/g;  
alert(reg.test('a'));  
alert(reg.test('a'));

FF: true false

G到如下说明
http://yiminghe.javaeye.com/blog/581347
15.10.6.3 RegExp.prototype.test(string) 
The following steps are taken: 
1.  Let match be the result of evaluating the RegExp.prototype.exec (15.10.6.3) algorithm upon this 
RegExp object using string as the argument. 
2.  If match is not null, then return true; else return false.

test  => (r.exec(s) != null)

那么知道exec 对待 g 正则表达式,会记录 lastIndex 到这个正则表达式上,这样子的话 第二个 test 则会从第一个 test 的 lastIndex 开始匹配,出现了上述的结果。

总结原因:

1.test 等于 调用exec

2.lastIndex 存在于正则表达式中,test还是最好不要设 g

BTW:// IE下正常 神奇的IE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息