用正则表达式实现千分位分隔符

xiaoxiao2021-02-28  26

正则实现数字以每3位加逗号的表示,如12345678 输出为12,345,678。

function format(number){ let reg =/(\d{1,3})(?=((\d{3}))+(\.\d*)?$)/g; return number.toString().replace(reg,'$&,'); }

知识点:

1. 将数字num转化为字符串后,全局(/g)正向匹配,看是否符合断言 (\d)(?=(\d{3})+$) 部分,直到匹配结束。即遇到 数字 + 该数字后面紧跟连续的三位数字(并且不管这连续的三位数字出现多少次),符合则在该数字(’$1’)后加入逗号。

备注:(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp.

举个栗子:

var num=1242343243;

console.log(num.toString().replace(/(\d)(?=(\d{3})+$)/g,'$1,'));

2. (\.\d*)? 惰性匹配,?表示匹配0次或1次,相当于{0,1}

3. '$&':表示与 regexp 相匹配的子串。

转载请注明原文地址: https://www.6miu.com/read-2628004.html

最新回复(0)