Я пытаюсь изменить входное значение с любых возможных символов на что-то похожее на номер кредитной карты (поэтому я хочу принимать только цифры и пробелы). Основное различие между моим номером и типичным регулярным выражением номера кредитной карты заключается в том, что мне нужно сопоставить 1 цифру, а затем группы из 4 цифр.
Правильный номер: 1 1234 1234
Неверные числа: 12 1234 123, 1234 1234 1
Я создал регулярное выражение, чем удалил все, кроме чисел, но мне было трудно добиться этого выше.
Получил что-то вроде этого:
this.rewardsNumber = this.rewardsNumber
.replace(/[^\d]/g, '')
.replace(/(.{4})/g, '$1 ')
.trim();
Это добавляет пробелы после каждых 4 цифр. Я хочу добавить 1-й пробел после 1-й цифры, а затем еще 4 и т. д.
ОБНОВЛЕНИЕ
Нашел решение, которое хорошо работает при вставке значения для ввода (оно добавляет пробел на лету в правильных местах).
this.rewardsNumber = this.rewardsNumber
.replace(/[^\d]/g, '')
.replace(/(.{1})(.{1,3})/g, '$1 $2')
.trim();
PS: Не заботьтесь о числах после второй 4-й группы цифр. Ввод имеет предел в нем.
.replace(/(.{1})(.{1,3})/g, '$1 $2')
- person Nosenation   schedule 28.12.2018