正则参考答案:
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才操作