Big_Trouble
@Big_Trouble
Программист недосамоучка

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

Не очень дружу с регулярными выражениями. В гугле нашел такой вариант
'^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$'

но он пропускает выражения типа: 0000-0000 и 00-00-00 подскажите как исправить чтобы пропускались только такие:
+79261234567
89261234567
79261234 567
+380 123 45 67
38(026)123-45-67
9261234567
79261234567
(495)1234567
(495) 123 45 67
89261234567
8-926-123-45-67
8 927 1234 234
8 927 12 12 888
8 927 12 555 12
8 927 123 8 123
  • Вопрос задан
  • 139 просмотров
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Комментировать
в регесп можно делать тоже условия и добавлять и или и не но не и тд.
вот тебе самый простой способ, по факту несколько масок в одной регулярке.
https://regex101.com/r/DnsKfE/1
но сдается мне нужно вам выделить не просто эти телефоны но и привести их к подобию
Праильно ли я понимаю
+7 или +3 или 8 ( есть ли еще другие ) ?
убираем сразу пробел ?
убираем сразу скобки ?
Если не с +7|8|+3|3 то телфон не верный ? или он не верный если цифр будет на 1 меньше, огда просо отсекаем +?
В общем составьте схемку всей логики я вам напишу регулярку. сразу чтоб в $0 выдавался унифицированный формат.
Опять же какие коды городов допустимы ?
ну или худобы стран
Хотя конечно если вкрлючать прям все доступные кгды это будет муторно,
А вот если вы знаете что это точно телеон и в этом элементе массива именно она то можно уже валидировать по длинне и пара варианто начала, всю мелочь типа пробелов тире отрезать и посчитать колчество от этого и валидировать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
Регулярки это не условные операторы. Это сложный, но шаблон, и совсем не факт, что все твои хотелки можно решить одной регуляркой. Тем более что у тебя тут вообще бардак. Начинаться может и с цифры и со скобки и со знака плюс, и внутри могут быть и пробелы и дефисы и скобки, и количество цифр разное.

Если плохо с регулярками, обойдись вообще без либо сделай несколько if/else с регулярками попроще.
Ответ написан
Ваш ответ на вопрос

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

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