javascript为数字添加千分符

2018-12-26  本文已影响0人  icaojinyu
/(\d{1,3})(?=(\d{3})+$)/g

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

  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
上一篇下一篇

猜你喜欢

热点阅读