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

rea*_*que 5 regex jquery currency

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

(\d)(?=(\d\d\d)+(?!\d))
Run Code Online (Sandbox Code Playgroud)

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

5487445.46878
Run Code Online (Sandbox Code Playgroud)

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

return number.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
Run Code Online (Sandbox Code Playgroud)

结果如下:

5,487,445.46,878
Run Code Online (Sandbox Code Playgroud)

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

return number.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1.")
Run Code Online (Sandbox Code Playgroud)

结果如何

5.487.445,46.878
Run Code Online (Sandbox Code Playgroud)

这些当然需要成为:

5,487,445.46878
Run Code Online (Sandbox Code Playgroud)

5.487.445,4687
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*tin 3

您可以使用您的RegEx号码,但如果其中包含逗号或点,请先拆分您的号码。

jsFiddle 演示

 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);
Run Code Online (Sandbox Code Playgroud)