正则参考答案:
var a = 123456789;
String(a).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
正则表达式拆解
1. 基础知识
x(?=y) 【先行断言】匹配“x”仅仅当“x”后面跟着“y”
例如: /Java(?=Script)/ Java开头的语言有很多我只认识JavaScript
x(?!y) 【反向否定查找】仅仅当“x”后面不跟着“y”时匹配“x”
例如:/Java(?!Script)/ Java开头的语言有很多我就不喜欢JavaScript
2. 正则拆解
- 第一步:
\B 匹配非单词边界
- 第二步:
?=(\d{3}) 匹配后面跟3个数字字符的位置,/+/表示匹配到底,此时定位到789
- 第三步:加
“ , ”,此时123456789=>123456,789
- 第四步:
?!\d匹配定位到123456,
- 第五步:
/**/g表示会递归匹配,继续对123456进行操作上述动作
其他
- 正则没有从右到左匹配的方法
- 用字符串+数组方法实现的话记得反转字符串
- JS内置
toLocaleString方法可直接实现,但存在兼容问题
- 前置判断必须大于999才操作