代码之家  ›  专栏  ›  技术社区  ›  Dasha Salo

regexp:货币格式

  •  1
  • Dasha Salo  · 技术社区  · 15 年前

    我需要对数字进行格式化,这样数千个数字就不会被任何东西分隔开,而数百个数字则用一个点分隔开。例如

    一千二百三十四点五六 十二点三四 一百二十三

    我写了下面的reqexp

    amountValue.replace(/^(\d+)[,.](\d{3})[.,](\d{2})$/,'$1' + '$2' +'.'+'$3').replace(/^(\d+),(\d{2})$/,'$1' +'.'+'$2');
    

    有没有办法缩短?

    谢谢您!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Gumbo    15 年前

    我只删除任何非数字字符,而不是小数点:

    amountValue.replace(/[^0-9](?!\d{2}$)/, '').replace(/,(?=\d{2}$)/, '.');
    
        2
  •  1
  •   cjk    15 年前

    认为 这可能有效:

    amountValue.replace(/^(\d*)[,.]?(\d{0,3})[.,](\d{2})$/,'$1' + '$2' +'.'+'$3');
    

    根据您的数据进行尝试。