Формат номера на основе строки формата в JavaScript / jQuery - PullRequest
6 голосов
/ 11 июля 2010

Допустим, у меня есть

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

Примеры:

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

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

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

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

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++);
    });
}
4 голосов
/ 11 июля 2010
"abc+d(123)4567890"
.replace(/\D/g, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...