// 千分位分割
"1234567890".replace(/\B(?=(?:\d{3})+(?!\d))/g, ',');
解析:
要理解 ?= ?: ?! ,需要先理解:前瞻、后顾、负前瞻、负后顾这四个概念
// 前瞻: exp1(?=exp2) 查找exp2前面的exp1 // 后顾: (?<=exp2)exp1 查找exp2后面的exp1 // 负前瞻: exp1(?!exp2) 查找后面不是exp2的exp1 // 负后顾: (?<!exp2)exp1 查找前面不是exp2的exp1
- \B 匹配非单词边界
上面正则可理解为:查找(3n个数字)+(1个非数字)组合前的非单词边界,如:
1 234 567 890 符合,替换后为:1,234567890
因为/g是全局替换,会继续匹配
12 345 678 90 不符合,因为678 这3个数字后面有1数字
...
1234 567 890 符合,替换后为: 1,234,567890
继续匹配直到全部匹配一遍,最后结果为:1,234,567,890
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。