本帖最后由 上海分校-小影 于 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 以上是两个一模一样的语句,因为s1和s2是一样的,但为什么会得到不同的结果? 这是因为对于test()这个正则函数,一旦启用全局匹配,lastIndex属性就会起作用,他会记录上一次匹配到了哪里,这样就能决定下一次从哪里开始,所以第二次匹配的时候lastIndex属性不是0,就会导致异常的结果。 以上问题解决办法有两个: 第一个:不要使用全局匹配,通常也是不需要用全局匹配。 第二个:每次需要用它之前将lastIndex属性重置为0,例如在reg.lastIndex = 0 之后再执行console.log(reg.test(s2));结果为true,与预期一致。
|