Solo agregar mil separadores antes de coma decimal.

He encontrado una expresión regular en stackoverflow para agregar un ‘,’ o ‘.’ después de cada tercer número dependiendo de tu idioma.

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

El problema es que también sucede cuando alcanzamos el punto decimal como por ejemplo:

 5487445.46878 

El resultado de eso con el siguiente código (y regex) es:

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

Lo que resulta en:

 5,487,445.46,878 

Estoy usando esta expresión regular cuando estoy convirtiendo un número dependiendo de su idioma. En holandés, por ejemplo, se usa una coma como separador, de modo que allí hago lo siguiente:

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

Lo que resulta en

 5.487.445,46.878 

Estos por supuesto necesitan convertirse en:

 5,487,445.46878 

y

 5.487.445,4687 

¿Alguien sabe dónde necesito actualizar la expresión regular para ignorar el punto decimal?

Puede usar su RegEx pero dividir su número primero si tiene una coma o un punto.

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

Puedes probar esto: –

  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; } 
Intereting Posts