A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-10-26 13:58 编辑

JS 使用正则test( )使用需要注意的事项

传智播客上海校区  崔长春老师

js中,使用test函数时要特别小心,当出现意想不到的结果时,要留意如下事项,具体示例如下:
var s1 = "ITCAST";
var s2 = "ITCAST";
var reg = /itcast/ig;
console.log(reg.test(s1));//true
console.log(reg.test(s2));//flase
以上是两个一模一样的语句,因为s1s2是一样的,但为什么会得到不同的结果?
这是因为对于test()这个正则函数,一旦启用全局匹配,lastIndex属性就会起作用,他会记录上一次匹配到了哪里,这样就能决定下一次从哪里开始,所以第二次匹配的时候lastIndex属性不是0,就会导致异常的结果。
以上问题解决办法有两个:
第一个:不要使用全局匹配,通常也是不需要用全局匹配。
第二个:每次需要用它之前将lastIndex属性重置为0,例如在reg.lastIndex = 0 之后再执行console.log(reg.test(s2));结果为true,与预期一致。


4 个回复

倒序浏览
不负时光,满载而归~
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马