(同一个正则表达式设置了全局标志(如 g),并循环使用test方法),导致匹配相同值却返回结果不一样

(同一个正则表达式设置了全局标志(如 g),并循环使用test方法),导致匹配相同值却返回结果不一样!

正则表达式的 lastIndex 属性。每次执行 test 方法时,如果正则表达式设置了全局标志,test 方法会改变正则表达式的> lastIndex 属性。连续执行 test() 方法时,后续的执行将会从 lastIndex 处开始匹配字符串,而不是每次都从字符串的开始位置匹配。

解决方法

三种方式:

描述
不使用全局标志:如果不需要全局匹配,就不要在正则表达式中使用 g 标志,这样可以避免 lastIndex 属性的影响 不使用 'g'
重置 lastIndex:在每次使用 test 方法之前,手动将正则表达式的 lastIndex 属性重置为0。这样可以确保每次匹配都是从字符串的开始位置进行 reg.lastIndex =0
每次创建新的正则表达式对象:在循环中,每次匹配时都创建一个新的正则表达式对象,这样可以避免 lastIndex 属性的影响 new RegExp()
相关推荐
Bianca4279 小时前
Excel正则表达式.获取字符
正则表达式·excel
狮子座的男孩1 天前
js基础:10、函数对象方法(call/apply)、arguments类数组对象、Date对象、Math工具类、包装类、字符串方法、正则表达式
前端·javascript·正则表达式·包装类·字符串方法·arguments·date对象
夏玉林的学习之路1 天前
正则表达式
数据库·c++·qt·mysql·正则表达式
壹号用户4 天前
python学习之正则表达式
python·学习·正则表达式
xiaozaq4 天前
java 正则表达式 所有的优先级
java·开发语言·正则表达式
ColderYY4 天前
Python中的正则表达式
开发语言·python·正则表达式
李宥小哥4 天前
正则表达式详解
正则表达式
珊瑚礁的猪猪侠7 天前
正则表达式入门到精通教程(Linux实操版)
linux·人工智能·正则表达式
!win !8 天前
分享二个实用正则
javascript·正则表达式
xw58 天前
分享二个实用正则
javascript·正则表达式