Один из вариантов - иметь необязательную группу, которая начинается в начале строки и (жадно) соответствует числу начальных цифр без запятых, которое вы хотите иметь.Затем вместо замены просто \1
замените на \1\2
(необязательная группа плюс вторая захваченная цифра):
const format = str => str.replace(
/(^(?:\d{1,2}))?(\d{1,3})(?=(?:\d{3})+$)/g,
// ^^^ change these to change the number of unbroken leading digits
'$1$2 '
);
console.log(format('1234567899'));
console.log(format('01234567899'));
console.log(format('101234567899'));
Необязательная группа приведенного выше фрагмента начинается с \d{1,2}
, что означает, что будет от 3 до 5 начальных цифр, не разбитых запятыми.Чтобы изменить это количество, просто измените количество повторений.
Начальная группа (^(?:\d{1,2}))?
означает: необязательно, начало строки, за которым следуют одна или две цифры.