美文网首页nodejs随记
JS数字正则千分位表示

JS数字正则千分位表示

作者: LCSan | 来源:发表于2021-03-04 18:08 被阅读0次

    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修饰符,执行全局匹配。

    相关文章

      网友评论

        本文标题:JS数字正则千分位表示

        本文链接:https://www.haomeiwen.com/subject/civkqltx.html