nodejs随记

JS数字正则千分位表示

2021-03-04  本文已影响0人  LCSan

replace方式

var num = 12345678;
num.toFixed(2).replace(/\B(?=(?:\d{3})*\b)/g, ",").replace(/^/, "$$ ");

提取方式

var num = "12345678.000";
num.match(/.{1,3}(?=(?:.{3})*[\.$])/g).join(",").replace(/^/,"\$ ") + num.replace(/\d+/,"");

充分应用位置标记,可以看出两个表达式大同小异,为的就是从右向左特性,定位到一个锚点,然后替换锚点位置或者提取锚点位置左侧的字符串。

几个重点:

  1. 使用带有字符串结尾锚点的正向前瞻来实现从右向左锚点定位。
    (?=(.{3})*$)来定位末尾位置往左任意三个字符的位置,(?=)匹配的是位置。
  2. ()是会提取子串的,我们这里只希望定位位置并不是提取。因此的改为(?:)得到(?:.{3})*$)
  3. 要匹配并提取字符串中所有位置,要使用g修饰符,执行全局匹配。
上一篇下一篇

猜你喜欢

热点阅读