在商城页面中我们经常会遇到需要每三位用逗号表示的时候,这时,用原生的js解决不够方便,此时可以使用正则表达式来进行快速替换
function transform (num){
return num.toString().replace(/\B(?=(\d{3})+$)/g, ",")
}
transform(10033434) //10,033,434
但遇到非整数的情况下例如
transform(53526.333) // 53526.333
并不会发生转换,这是因为正则中的$符号表示的是匹配字符串的末尾,此时分两种情况考虑,用indexOf找到 ‘,’ , 在做相应变化,改善后的代码如下
function thousands2(num){
var str = num.toString();
var reg = str.indexOf(".") > -1 ? /\B(?=(\d{3})+\.)/g : /\B(?=(\d{3})+$)/g;
return str.replace(reg,",");
}
thousands2(-1234567.1234567)//-1,234,567.1234567
thousands2(2232.33) //2,232.33
这样就能解决常用的千位制的转换啦!