实现168732363.66元用逗号格式为168,732,363.66元

js金钱分割,正则

var test = '168732363.66'
var format = test.replace(/\B(?=(\d{3})+(?!\d))/g, ',')

console.log(format )  //168,732,363.66

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前面才匹配

posted @ 2020-09-29 16:52  这是一个寂寞的天  阅读(157)  评论(0编辑  收藏  举报