数字千分位正则

最近碰到一个简单的需求,就是将一个数字转换成金额表达式: 比如将 12345678 转换成 12,345,678,这个需求有很多种处理方案:

比如用字符串切分,每3位push到一个数组中去,然后再join(',')得到结论。

但是,最简单字符串处理还是正则表达式的方式。

以上需求最简单的方式是,使用正则替换,

 str.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');

这个正则里面用到了三个知识点:

?: 非捕获分组,这个分组不会被捕获,这样(\d{3})就不会被表达式捕获

?= 零宽断言,在这里表示后面是连续3个整数的重复直到结尾

$1 第一个捕获分组

发散: 如果我要将字符串切分成数组呢? 不妨试试如下的表达式/(\d{1,3})(?=(\d{3})*$)/g

正则表达式在处理字符串方面真是极端方便,不过要写好,还真是不容易。

Table of Contents