正则数字千分位分割是一个比较喜欢被考的面试题,下面来看看如何用正则去匹配;

上面的代码中,(?=)和(?!)属于零宽断言,就是他们只是负责匹配一个位置,不会匹配真实的元素。我们先来看第二个正则,看是如何匹配的:

background Layer 1 12345678 /(\d)(?=(\d{3})+$)/g 符合条件 符合条件

第二个正则的意思是,一个数字,他的后面总是3个数字的倍数结尾,然后将匹配到的元素后面加一个逗号,上面的demo中我们可以看到符合条件的数组是2和5,因此结果就是12,345,678。

现在我们来看一下第一个正则,这个有点难理解,我们将它分开来看,先看(?=(\d{3})+$)再看(?!\b):

background Layer 1 (?=(\d{3})+$) 1 2 3 4 5 6 匹配一个位置,这个位置后面都是3个数字的倍数结尾 (?!\b) 这个位置的右边不是字符边界 1 2 3 4 5 6

(?!\b)除了可以写在(?=)的里面,也可以写在它的后面:/(?=(\d{3})+$)(?!\b)/g,意思是一样的,表示这个位置的右边不能是字符边界,这个其实是为了排除最左边是逗号的情况,这种思路还是非常巧妙的。

数字千分号分割还有一个小数版的:

区别就是之前是3个数字的倍数结尾,变成了3个数字的倍数后面是小数点。

其他文章

0
我要评论

评论

返回
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

提交
还可以输入500个字