JavaScript千分位加逗号【正则拆解教程】

正则参考答案:

var a = 123456789;

String(a).replace(/\B(?=(\d{3})+(?!\d))/g, ",")

正则表达式拆解

1. 基础知识

  1. x(?=y) 【先行断言】匹配“x”仅仅当“x”后面跟着“y”
    例如: /Java(?=Script)/ Java开头的语言有很多我只认识JavaScript
  2. x(?!y) 【反向否定查找】仅仅当“x”后面不跟着“y”时匹配“x”
    例如:/Java(?!Script)/ Java开头的语言有很多我就不喜欢JavaScript

2. 正则拆解

  • 第一步:\B 匹配非单词边界
  • 第二步:?=(\d{3}) 匹配后面跟3个数字字符的位置,/+/表示匹配到底,此时定位到789
  • 第三步:加“ , ”,此时123456789=>123456,789
  • 第四步:?!\d匹配定位到123456,
  • 第五步:/**/g表示会递归匹配,继续对123456进行操作上述动作

其他

  1. 正则没有从右到左匹配的方法
  2. 用字符串+数组方法实现的话记得反转字符串
  3. JS内置toLocaleString方法可直接实现,但存在兼容问题
  4. 前置判断必须大于999才操作

你可能感兴趣的:(JavaScript千分位加逗号【正则拆解教程】)