javascript - 一个奇怪的js正则问题

查看:84
本文介绍了javascript - 一个奇怪的js正则问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

写了个正则 /\[([0-9a-f]{4,6})\]/g

但chrome下做测试为什么会有这个现象额?

然后是我正则写错了么, 匹配字符串中的[1112f]这种

解决方案


你要明白,正则表达式对象,有一个属性,lastIndex,lastIndex属性用于规定下次匹配的起始位置。
因为你多次使用a.test(),调用的是同一个正则表达式实例,所以,第一次匹配成功后,会改变lastIndex的值
如果你这样写,就不会出现你所疑惑的问题了

/\[([0-9a-f]{4,6})\]/g.test('[2006]')

每次匹配,都新建一个正则表达式对象,然后进行匹配,因为是新建的,所以lastIndex为0,总是从0开始匹配

这篇关于javascript - 一个奇怪的js正则问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆