使用正则实现数值千分位格式化

1,563 阅读1分钟

无小数位的情况

匹配锚点

'123456789'.replace(/(?=\B(\d{3})+\b)/g,',')

匹配千分位数字

'123456789'.replace(/(\d)(?=(\d{3})+\b)/g,'$1,')

有小数位的情况(小数位不需要格式化)

支持后行断言的情况下 V8 引擎 4.9 版(Chrome 62)已经支持。

  • 使用后行断言
'123456789.12345678'.replace(/(?<=(^|\s)\d+)(?=(\d{3})+\b)/g, ',');
  • 使用后行否定断言
'123456789.12345678'.replace(/(?<!\.\d+)(?=\B(\d{3})+\b)/g, ',');