Search code examples
jqueryregexcurrency

Only add thousand separator before decimal comma


I have found a regex on stackoverflow to add a ',' or '.' after every third number depending on your language.

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

The problem is that it also happens when we reach the decimal point like with for example:

5487445.46878

The result of that with the following code (and regex) is:

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

Which results in:

5,487,445.46,878

I'm using this regex when I'm converting a number depending on your language. In Dutch for example a comma is used as a seperator, so there I do the following:

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

Which results in

5.487.445,46.878

These of course need to become:

5,487,445.46878

and

5.487.445,4687

Does anybody know where I need to update the regex to ignore the decimal point?


Solution

  • You can use your RegEx but split your number first if its has a comma or point in it.

    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);