- 实现的功能为:123456789 转换为123,456,789
- 使用的正则表达式为:
/(\d{1,3})(?=(\d{3})+$)/g
- 执行完结果就是: 123,456,789
下面我来解释一下这个正则是怎么实现的
- \d 匹配数字相当于[0-9]
- {m,n} 匹配的数目大于m小于n,所以\d{1,3}的意思就是匹配1到3个数字
- ?= 正向前瞻,它稍微复杂一点,说不清楚就举个例子:
/\d/会匹配一个数字,/\d(?=\w)/依然只匹配一个数字,但是它要求数字后面跟一个字母,'1a'.match(/\d(?=\w)/g) 结果为 ["1"] - 所以/(\d{1,3})(?=(\d{3})+$)/g这个正则表达式的意思就是:
匹配1到3个数字,并且这个数字后面要跟着3的倍数的数字,也就是3,6,9,...个数字 - '123456789'.match(/(\d{1,3})(?=(\d{3})+$)/g) 会匹配到 ["123", "456"]
- 完整代码:
var num = 1234567890
function addComma(str) {
return str.replace(/(\d{1,3})(?=(\d{3})+$)/g,'$1,')
}
console.log(addComma(num.toString())) // 1,234,567,890
网友评论