Требовалось найти решение по разделению числа пробелами на разряды.
JS + регулярное выражение №1
num = 123456789;
str = '' + num;
result = str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ");
console.log(result); // 123 456 789
JS + регулярка №2
function numberWithSpaces(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}
console.log(numberWithSpaces(1)); // 1
console.log(numberWithSpaces(100)); // 100
console.log(numberWithSpaces(10000)); // 10 000
console.log(numberWithSpaces(1000000)); // 1 000 000
console.log(numberWithSpaces(100000000)); // 100 000 000
Для значений с плавающей точкой
function numberWithSpaces(x) {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
return parts.join(".");
}
console.log(numberWithSpaces(1.05));
console.log(numberWithSpaces(100.05));
console.log(numberWithSpaces(10000.05));
console.log(numberWithSpaces(1000000.05));
console.log(numberWithSpaces(100000000.05));
только JS
Более лаконичное элегантное решение с применением функции конвертации в строку - toLocaleString
Решение актуально и для чисел с плавающей точкой.
Однако, при выводе результата точка заменится запятой.
var num = 123456789;
var result = num.toLocaleString();
console.log(result); // 123 456 789
// с плавающей точкой
var num = 123456789.123;
var result = num.toLocaleString();
console.log(result); // 123 456 789,123