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