这段每4个数字加一个逗号的正则该怎么理解?-灵析社区

接地气的编码师

var num='123456789' var str=num.replace(/(?=(\d{4})+$)/g,',') console.log('======str',str);// 1,2345,6789 上述代码可以给每4个数字加一个逗号,但是这正则该怎么理解呢? 因为我的理解结果是1234,5678,9 但实际正则在替换时,似乎是从右向左每4个判断一次,让我很疑惑

阅读量:16

点赞量:0

问AI
是从前往后查的,可以把正则的全局模式去掉实验下: 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的位置插入了逗号。 https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/f7b13f11729b37318adc69ac1831860e.png