@kur4chyt
Качественный говнокод от производителя

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

В интернете нашел только примеры реализации такой валидации для определенных стран. Мне же требуется проверять на валидность номер любой страны. Возможно ли такое реализовать одним регулярным выражением? Если да, то как?
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 3
trapwalker
@trapwalker
Программист, энтузиаст
По идее стандарт номера телефона, по которому отовсюду можно позвонить такой: "\+\d{11}".
Проблемы могут возникнуть с местными городскими соращенными номерами, там может быть и 5 цифр и 6 и 7 без кода города. Но если вы собираете номера телефонов по всему миру. то код города и страны вам все равно нужен,а значит 11-значный номер в любом случае будет правильным.
В разных местах по-разному ринято группировать цифры скобочками и дефисами. Но это к формату самого номера не относится, номер начинается с плюса и имеет 11 цифр. всё.
Из него взяв первую одну или больше цифр можно получить код страны, потом. для местных номеров, код региона, потом местный номер, но это лишнее, мне кажется. Берите одиннадцать цифр и всё.
Для разных стран можно предлагать пользователю разные форматы отображения и группировки цифр номера, но это уже прям можно сказать лишнее. Просто при вводе гнорируйте все кроме цифр, а плюс оставьте зафиксированным, чтобы люди догадались, что номер нужен в полном международном одиннадцатизначном формате.
Ответ написан
delphinpro
@delphinpro
frontend developer
Вот крутая библиотечка https://github.com/jackocnr/intl-tel-input
Валидирует номера телефонов всех стран.
Ответ написан
dollar
@dollar
На чёткий вопрос - чёткий ответ.
Конечно, такое возможно реализовать.
Но алгоритмом, а не рег. выражением.

Так как вам нужна проверка для любой страны, то понадобится изучить правила составления номера для каждой страны, и затем объединить их в единый алгоритм. Вроде бы не сложно, но долго (это ответ на вопрос "как?").
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Витебск
от 2 800 до 3 300 $