Число формата на основе Строки формата в JavaScript/jQuery

Скажем, у меня есть a

  • строка формата "XXX - XXX - XXXX" (для форматирования номера телефона), или любая другая строка формата, в которой X обозначает число
  • Я хочу сохранить форматирование в строке формата (интервал, тире и т.д.), но обмениваться каждым X для числа и отбросить все форматирование в исходной строке

Примеры:

  • Вход: "abc+d (123) 4567890", строка формата: "XXX - XXX - XXXX", вывод: "123 - 456 - 7890"
  • Вход "b c 1 2 3 4567890", Строка формата: "X:X! XXXXX, XXX", Вывод: "1:2! 34567,890"
  • Введите "1234567890", строка формата: "(XXX) XXX-XXXX", вывод: "(123) 456-7890"

Я думаю, что мог захватить число путем итерации через исходную строку (foreach символ в '0123456789'), но я не уверен, как я могу затем соединить это изящно к правильному формату. Возможно, существует функция jQuery, которая уже делает это?

6
задан Alex 11 July 2010 в 18:31
поделиться

2 ответа

Вот один из способов сделать это:

function formatPhoneNumber(input, format) {
    // Strip non-numeric characters
    var digits = input.replace(/\D/g, '');

    // Replace each "X" with the next digit
    var count = 0;
    return format.replace(/X/g, function() {
        return digits.charAt(count++);
    });
}
5
ответ дан 10 December 2019 в 02:42
поделиться
"abc+d(123)4567890"
.replace(/\D/g, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")

Сначала мы удаляем нецифровые символы (\ D), затем группируем их и, наконец, используем группы в тексте для замены.

4
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: