这段每4个数字加一个逗号的正则该怎么理解?
var num='123456789'
var str=num.replace(/(?=(\d{4})+$)/g,',')
console.log('======str',str);// 1,2345,6789
上述代码可以给每4个数字加一个逗号,但是这正则该怎么理解呢?因为我的理解结果是1234,5678,9但实际正则在替换时,似乎是从右向左每4个判断一次,让我很疑惑
回复
1个回答
test
2024-06-26
是从前往后查的,可以把正则的全局模式去掉实验下:
const num='123456789'
const str=num.replace(/(?=(\d{4})+$)/,',')
console.log(str) // 1,23456789
/(?=(\d{4})+$)/g 匹配的位置是第1位(数字2的位置,后面有8个连续数字)和第5位(数字6的位置后面4个连续数字)。所以会在数字2和数字6的位置用逗号替换后面的数字,同时因为有前瞻断言不会消耗字符,相当于在2和6的位置插入了逗号。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容