Всем привет.
Столкнулся с проблемой при попытке привести номер телефона к нормальному виду.
Написал следующую функцию:
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 должен удалить все символы, не являющиеся числами?