千位符

千位符这样的需求是非常常见的,我一般的处理方式就是 number.toLocaleString()

但是如果用正则我们应该如何来编写代码呢?

半小时正则表达式

1
123456789 --> 123,456,789

我们希望从各位开始每三个前加一个 , 但是如果在最前那么就不加,这里面用的难点的就是零宽断言,其他的就是数字与符号的匹配。

1
2
3
function format(num){
return num && num.toString().replace(/(?=(?!^)(\d{3})+$)/g, ',')
}

这样就完成了对整数的千位符处理。如果有小数点的话该如何处理?

1
2
3
function formatFloat(num){
return num && num.toString().replace(/\d+/g, m => m.replace(/(?=(?!^)(\d{3})+$)/g,','))
}

先将小数点前的匹配出来进行处理就好。

棒棒糖