@ildar-meyker

Как создать регулярку из номера телефона для номера телефона?

Есть, допустим, телефон. +7 (394) 888-20-22
Теперь для него нужно условно создать что-то вроде /^\+7 \(\d\d\d\) \d\d\d-\d\d-\d\d$/, чтобы потом сделать /^\+7 \(\d\d\d\) \d\d\d-\d\d-\d\d$/.test(+7 (204) 645-21-04);
Исходный номер может отличаться. То есть регулярку нужно готовить динамически. Да, есть new RegExp. Если цифры я могу заменить на [0-9], то как получить \( и \) ?
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 2
Номера телефона это более сложная вещь чем тебе кажется, вот тебе пример того что может пойти не так
1. +7 или 8
2. не все номера начинаются с 8, с обственно с нее вообще мало номеров начинаются, россия.
3. Коды 495 и тд, для россии их достаточно много по этому валидировать телефон по ним можно, но регулярочка там получается мое почтение и возникают проблемы с другими странами.
4. Синтаксис написания разный Пробелы, () - притом все это может расположиться в разных местах, или отсутствовать
Если же мы говоирм только о русских номерах то я тебе рекомендую следующее.

Удаляешь все символы(+|7|8|(|)|-|\s|) , а еще лучше оставляешь только цифры,

+7(926)5748801 ->      7926574880
+7(926) 57 48 801 ->   7926574880
8 (926)574-88-01 ->    7926574880
+7(926)5748801 ->      7926574880
89265748801 ->         7926574880
+79265748801 ->        7926574880

И тд

Убеждаешься в их количестве
заменяешь +7 на 8 или наоборот как тебе нужн.
+7 (926) 574-88-01

И после этого уже расставляй тире и скобки в том формате что тебе нужно при для сохранения в бд.
Не нужно требовать с человека соблюдать твой синтаксис просто если он в состояние ввести 11 цифр бери их и форматируй уже сам.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ну так /([^0-9])/ заменять на "\\\1"
Ответ написан
Ваш ответ на вопрос

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

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