javascript为数字添加千分符

  • 实现的功能为:123456789 转换为123,456,789
  • 使用的正则表达式为:
/(\d{1,3})(?=(\d{3})+$)/g
  • 执行完结果就是: 123,456,789

下面我来解释一下这个正则是怎么实现的

  1. \d 匹配数字相当于[0-9]
  2. {m,n} 匹配的数目大于m小于n,所以\d{1,3}的意思就是匹配1到3个数字
  3. ?= 正向前瞻,它稍微复杂一点,说不清楚就举个例子:
    /\d/会匹配一个数字,/\d(?=\w)/依然只匹配一个数字,但是它要求数字后面跟一个字母,'1a'.match(/\d(?=\w)/g) 结果为 ["1"]
  4. 所以/(\d{1,3})(?=(\d{3})+$)/g这个正则表达式的意思就是:
    匹配1到3个数字,并且这个数字后面要跟着3的倍数的数字,也就是3,6,9,...个数字
  5. '123456789'.match(/(\d{1,3})(?=(\d{3})+$)/g) 会匹配到 ["123", "456"]
  6. 完整代码:
  var num = 1234567890
  function addComma(str) {
    return str.replace(/(\d{1,3})(?=(\d{3})+$)/g,'$1,')
  }

  console.log(addComma(num.toString())) // 1,234,567,890
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,502评论 0 20
  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 12,000评论 0 99
  • //举例说明。 //经常看到有人为了给数字加千分号(,)例1344444--->13,444,444;写一大堆代码...
    凡凡的小web阅读 4,503评论 0 0
  • 正则表达式 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描...
    yshenhn阅读 2,795评论 0 0
  • “富在深山有人知”! “大树杜鹃王”早已以其高贵、霸气、绚烂,无与伦比的品貌誉满天下。然我们虽近在咫尺,且仰慕已久...
    读书滋味长阅读 4,357评论 3 2