Мне нужен PHP RegEx, через который я могу проверить формат номера телефона, используя следующие критерии:
Я попытался выполнить поиск в Stack Overflow перед публикацией этого вопроса, но не смог найти точное решение. Любая помощь будет высоко оценен.
Редактировать: я просто хочу, чтобы пользователь вводил номер телефона в допустимом формате, так как в настоящее время мои клиенты делают некоторые глупые ошибки форматирования при написании. Я не беспокоюсь о том, что это действительно действительный (call-able), поскольку пользователь сам позаботится об этом.
С уважением
Я не буду сжигать пальцы.
Просто взглянув на номер телефона, вы не можете судить, действительно ли это или нет, и даже если он «выглядит» действительным, это может быть не номер телефона, который вы ищете (т. Е. Чужой номер телефона).
Вы пытаетесь решить проблему на неправильном уровне. Единственный способ проверить номер телефона – это на самом деле вызвать его;)
Регулярное выражение, которое соответствует вашим критериям:
/^(1|20|21|..etc)[1-9][0-9]+$/
список кодов стран (разделенных |), за которыми следует цифра, которая не равна 0, а затем любая цифра сколько угодно раз.
Вы не можете выполнить проверку длины 13 и проверку страны в одном регулярном выражении, потому что длина кодов стран отличается (насколько мне известно). Вы можете выполнить проверку длиной 13 строк с помощью общего регулярного выражения, например:
/^.{,13}$/
Соответствие всего до 13 символов
Цифра сразу после кода страны не должна быть равна нулю;
Эта система потерпит неудачу в Италии. Ведущий 0 для итальянских телефонных номеров набирается из-за границы.
Это могут быть и другие страны, где это также происходит, но Италия является самой известной.
Максимальная длина номера не должна превышать 13 цифр.
Для более коротких номеров, но с добавленным добавлением, это правило будет нарушено во многих странах.
С 3-значным кодом страны, 3-значным кодом области и 8-значным номером абонента, у вас цифра короткая.