js金钱分割,正则

```

var test1 = '1234567890'
var format = test1.replace(/B(?=(d{3})+(?!d))/g, ',')
"1,234,567,890"

```

1.分析正则,先分析第一部分 只有匹配到非词的边界在`(d{3})+(?!d)`前面才匹配。

2.分析第二部分 `(d{3})+(?!d)`  只有`d{3})+`不再`d`前面才匹配,即`d{3})+`匹配完整个数据不能留有多余的数字才算匹配成功 。

3.`d{3})+` 这部分就是匹配3个数字1至多次。

总结 正则的先行断言 a(?=b)  只有a在b前面才匹配 ,正则的先行否定断言a(?!b)只有a不再b前面才匹配

原文地址:https://www.cnblogs.com/harris-peng/p/9679333.html