Регулярное выражение (RegEx) для телефонных номеров с проверкой кода страны - PullRequest
5 голосов
/ 25 апреля 2011

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

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

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

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

С уважением

Ответы [ 2 ]

5 голосов
/ 25 апреля 2011

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

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

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

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

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

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

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

/^.{,13}$/

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

3 голосов
/ 29 сентября 2011

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

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

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

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

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

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

...