只在十进制逗号前加上千位分隔符

时间:2013-08-29 14:19:55

标签: jquery regex currency

我在stackoverflow上找到了一个正则表达式来添加','或'。'每三个数字后,取决于您的语言。

(\d)(?=(\d\d\d)+(?!\d))

问题是当我们达到小数点时也会发生这种情况,例如:

5487445.46878

使用以下代码(和正则表达式)的结果是:

return number.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");

结果是:

5,487,445.46,878

当我根据您的语言转换数字时,我正在使用此正则表达式。例如,在荷兰语中,逗号用作分隔符,因此我执行以下操作:

return number.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1.")

结果是

5.487.445,46.878

这些当然需要成为:

5,487,445.46878

5.487.445,4687

有人知道我需要更新正则表达式以忽略小数点吗?

2 个答案:

答案 0 :(得分:3)

您可以使用RegEx,但如果您的号码中有逗号或点,则先将其分开。

jsFiddle demo

 var input = '5487445.46878';
 var parts = input.split('.');
 var part1 = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
 var part2 = parts[1];

 alert(part1 + '.' + part2);

答案 1 :(得分:2)

你可以试试这个: -

    function thousandsSeparator(input) {
    var output = input
    if (parseFloat(input)) {
        input = new String(input);
        var parts = input.split("."); 
        parts[0] = parts[0].split("").reverse().join("").replace(/(\d{3})(?!$)/g, "$1,").split("").reverse().join("");
        output = parts.join(".");
    }

    return output;
}