黑马程序员技术交流社区

标题: 【上海校区】JS 使用正则test( )使用需要注意的事项 [打印本页]

作者: 为热爱挥汗    时间: 2018-10-25 22:10
标题: 【上海校区】JS 使用正则test( )使用需要注意的事项
本帖最后由 上海分校-小影 于 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,与预期一致。



作者: 小影姐姐    时间: 2018-10-28 15:39
不负时光,满载而归~
作者: 不二晨    时间: 2018-10-31 14:15

作者: 梦缠绕的时候    时间: 2018-11-1 14:29

作者: 魔都黑马少年梦    时间: 2018-11-1 16:02





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2