@eskars

Как проверить номер телефона и привести его к нормальному виду регулярным выражением?

Всем привет.
Столкнулся с проблемой при попытке привести номер телефона к нормальному виду.
Написал следующую функцию:
function prettifyNumber(inputVal) {
        const prettified = inputVal
          .replace(/\D/g, "")
          .replace(/^7|^8/, "")
          .replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, "+7 ($1) $2-$3-$4");
        return prettified.length === 18 ? prettified : inputVal;
}

При проверке обычных номеров функция работает нормально, но при попытке проверки номера "+7 (495) 111-22-2x" (вместо v можно подставить любой символ-не число) возвращается значение, как будто это действительный номер.
Почему так происходит, учитывая что самый первый replace должен удалить все символы, не являющиеся числами?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
return prettified.length === 18 ? prettified : inputVal;

он возвращает не "как будто это действительный номер", а аргумент функции, ту бишь то что вы ему скормили, то обратно и отдает
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы