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才操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容