Задать вопрос
@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 должен удалить все символы, не являющиеся числами?
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
return prettified.length === 18 ? prettified : inputVal;

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

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

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