正则表达式_global造成的二次的匹配结果不一致的问题
let num = 77795
const reg = /^[0-9]\d*$/g
console.log(reg.test(num)) // true
console.log(reg.test(num)) // false
- 正则的 lastIndex 从字面上来讲就是最后一个索引,实际上它的意思是正则表达式开始下一次查找的索引位置,第一次的时候总是为 0 的,第一次查找完了的时候会把 lastIndex 的值设为匹配到得字符串的最后一个字符的索引位置加 1,第二次查找的时候会从 lastIndex 这个位置开始,后面的以此类推。如果没有找到,则会把 lastIndex 重置为 0。要注意的是,lastIndex 属性只有在有全局标志正则表达式中才有作用
- 解决: 每次调用前都设置lastIndex值为0
let num = 77795
const reg = /^[0-9]\d*$/g
setInterval(() => {
reg.lastIndex = 0
console.log(reg.test(num)) // true
}, 1000)
分类:
正则表达式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】