正则表达式 - 千分位分隔符

若对下文中 ?= 和 ?: 不是很了解的同学可以先看看:正则表达式 ?= ?! 和 ?:

下面来看看给数字添加千分位的正则表达式方法:

let num = "12345678";
console.log(num.replace(/(\d)(?=(?:\d{3})+$)/g,'$1,'))//"12,345,678"

让我们来解析一下上面的代码。

正则表达式 /(\d)(?=(?:\d{3})+$)/g 表示 取字符串中 以 3 的倍数个数字结尾的子串 前面的那个数字

num.match(/(\d)(?=(?:\d{3})+$)/g) //其返回值为:[ '2', '5' ]

而 num.replace(/(\d)(?=(?:\d{3})+$)/g,'$1,') 意为 将匹配到的那个数字,替换为其本身加上一个逗号(例:'2' -> '2,')。

下面为字符串 "12345678"添加千位分隔符 为例,展示上面代码对其匹配及替换过程。

正则匹配从头部开始,

正则表达式 - 千分位分隔符_第1张图片

所以,结果为:"12,345,678" 。 

本文中的正则表达式是只针对纯整数的情况进行千位分隔符的添加,关于其它情况,可以看一下下面的文章

下面的文章里有一些其它的方法(有用不同的正则表达式的方法):

Web前端面试指导(二十二):用js实现千位分隔符,怎么实现? 多种方法

千位分隔符的完整攻略 纯整数和其它情况(如含小数位)

千位分割符的理解 用另一种正则表达式实现

你可能感兴趣的:(前端,JavaScript)