正则实现数字以每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 相匹配的子串。