Javascript RegExp вставлять запятую каждые три цифры в числе до разделительной точки

Например у нас есть число 1000000.0000000 (миллион, округленный до 7 цифр после нуля). нужно написать регулярку, которая вставляет запятую каждые 3 цифры до разделительной точки, чтобы получилось следующим образом 1,000,000.0000000


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Вы можете использовать

function numberWithCommas(x) {
    return x.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
}
console.log(numberWithCommas("1000000.0000000"));
// => 1,000,000.0000000

См. этот ответ на англоязычном SO и пример работы регулярного выражения.

Объяснение шаблона

  • \B - позиция в строке, противоположная границе слова (т.е. между двух буквенно-цифровых или между двух небуквенно-цифровых символов, т.е. тут кокретно между двух цифр)
  • (?<!\.\d*) - позиция в строке, сразу перед которой нет ., за которой следует ноль и более цифр
  • (?=(\d{3})+(?!\d)) - позиция в строке, сразу за которой следует одна и более последовательностей из трёх цифр, за которыми не следует ещё одна цифра.
→ Ссылка