Регулярное Выражение (Регулярное Выражение) Для Телефонных Номеров С Проверкой Кода Страны


Мне нужно регулярное выражение PHP, с помощью которого я могу проверить формат телефонного номера, используя следующие критерии:

  • Не должно включать ничего, кроме чисел;
  • Не следует начинать с нуля, так как мне нужно, чтобы код страны был с префиксом;
  • Список разрешенных кодов стран должен быть в регулярном выражении;
  • Цифра сразу после кода страны не должна быть нулем;
  • Максимальная длина числа не должна превышать 13 цифры.

Я попытался выполнить поиск по переполнению стека перед публикацией этого вопроса, но не смог найти точного решения. Любая помощь будет высоко оценена.

Редактировать: Я просто хочу, чтобы пользователь ввел номер телефона в допустимом формате , поскольку в настоящее время мои клиенты делают некоторые глупые ошибки форматирования при его написании. Я не беспокоюсь о том, что он действительно действителен (доступен для вызова), так как пользователь сам позаботится об этом.

С уважением

Author: Saad, 2011-04-25

2 answers

Я бы не обжег об это пальцы.

Просто взглянув на номер телефона, вы не можете судить, действителен он или нет, и даже если он "выглядит" действительным, это может быть не тот номер телефона, который вы ищете (т.Е. Чужой номер телефона).

Вы пытаетесь решить проблему на неправильном уровне. Единственный способ подтвердить номер телефона - это действительно ПОЗВОНИТЬ по нему;)

Регулярное выражение, удовлетворяющее вашим критериям:

/^(1|20|21|..etc)[1-9][0-9]+$/

Список кодов стран (разделенных |) за ним следует цифра, которая не равна 0, за которой следует любая цифра любое количество раз.

Вы не можете выполнить проверку длины 13 и проверку страны в одном регулярном выражении, потому что длина кодов стран различается (по крайней мере, насколько мне известно). Вы можете выполнить проверку длины 13 с помощью общего регулярного выражения, такого как:

/^.{,13}$/

Сопоставление чего-либо длиной до 13 символов

 5
Author: Halcyon, 2011-04-25 11:58:42

Цифра сразу после кода страны не должна быть нулем;

Эта система потерпит неудачу для Италии. Ведущим 0 для итальянских телефонных номеров является , набранный из-за рубежа.

Это могут быть и другие страны, где это тоже происходит, но Италия является наиболее известной.

Максимальная длина номера не должна превышать 13 цифр.

Для более коротких номеров, но с добавленным расширением, это правило будет нарушено в несколько стран.

С 3-значным кодом страны, 3-значным кодом города и 8-значным абонентским номером у вас не хватает цифры.

 3
Author: dave singer, 2011-09-29 06:58:27