Intereting Posts
Уведомление в реальном времени от веб-сервера к клиенту Как отправить электронную почту с арабским контентом через почтовую функцию PHP? Автозагрузка классов в PHPUnit с использованием Composer и autoload.php Используйте .htaccess, чтобы предотвратить доступ к корневому каталогу из открытого доступа Манипулятор ошибок Codeigniter для просмотра jQuery.post () в WordPress Безопасность PHP-формы с рефером запись объекта JSON в файл .json на сервере Использование классов без пространства имен с Yii2 Подключение к серверу mysql (localhost) очень медленно Каков наилучший шаблон проектирования для разработки интерфейса WebPage? Как перегрузить конструктор классов в пределах признаков в PHP> = 5.4 API Google Analytics исключает исключение «invalid_grant» с учетной записью службы. Тот же код на двух серверах. Только один работает Установка Php-intl на XAMPP как добавить или вставить CKEditor на php-страницу

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

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

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

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

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

С уважением

Я не буду сжигать пальцы.

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

Вы пытаетесь решить проблему на неправильном уровне. Единственный способ проверить номер телефона – это на самом деле вызвать его;)

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

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

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

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

 /^.{,13}$/ 

Соответствие всего до 13 символов

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

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

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

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

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

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