проверка номера телефона на корректность php
Проверка данных регулярными выражениями в PHP
Содержание:
Сборник основных шаблонов регулярных выражений на PHP для проверки данных.
Проверка набора из латинских букв и цифр
Регулярное выражение для проверки набора только из латинских букв и цифр:
Если необходимо добавить в набор некоторые символы:
Проверка на кириллицу и цифры
Регулярное выражение для проверки набора только из букв кириллицы и цифр:
Проверка на число
Регулярное выражение для проверки данных на целое число:
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):
Проверка Email
Регулярное выражение для проверки Email:
Проверка номера телефона
Регулярное выражение для проверки номера телефона:
Проверка даты по формату
Формат MySQL YYYY-MM-DD :
Проверка md5-хэша
Регулярное выражение для проверки на корректность md5-хэша:
Проверка IP адресов
Регулярное выражение для проверки IPv4 адреса:
Проверка IPv6 адреса:
Проверка доменного имени
Регулярное выражение для проверки на корректность доменного имени сайта:
Подтверждение номера телефона по SMS
Широкое распространение на сайтах коммерческой тематики получили формы обратной связи типа «Заказать звонок». Пользователю сайта предлагается форма с полями: имя и телефон. Заполнив данные, пользователь ждет звонка на указанный номер телефона. А что если пользователь указал не свой телефон?
Или другая ситуация: пользователь сайта забыл свой пароль от учетной записи и в качестве альтернативы желает получить новый пароль на свой номер телефона (указанный в учетной записи). Естественно, он должен знать свой номер телефона и иметь его под рукой, так как SMS придет лишь на прикрепленный телефон.
Подобных ситуаций в современных интернет-реалиях множество, если вы администратор сайта, имеющий дело с учетными записями пользователей, Вам наверняка будет полезной такая функция как подтверждение номера (валидация) мобильного телефона по SMS.
Верификация телефона по SMS
Проверить принадлежность номера телефона пользователю достаточно просто: на номер телефона высылается одноразовый код в SMS сообщении с последующим подтверждением кода на сайте.
Форма для подтверждения телефона по SMS (которую мы сегодня сделаем собственноручно) выглядит примерно следующим образом:
Форма для верификации телефона по одноразовому SMS
Принцип работы
Данный скрипт не является «готовым продуктом», он лишь иллюстрирует механизм верификации телефона по SMS и потребует от Вас его адаптации под конкретные нужды.
Использование SMS шлюза
После регистрации, в личном кабинете в меню найдите «Программистам», в этой вкладке найдете Ваш api_id. Он вам понадобится далее.
HTML форма валидации телефона
Создадим HTML форму для валидации телефона пользователя: модальное окно, поля для ввода и проверки данных (примерный вид как на скрине выше). Для этого создадим файл index.php c содержимым:
В этом файле обратим внимание на последние строчки, где указывается маска для ввода телефона. Для Украины: +38 (099) 999-99-99 для России: +7 (999) 999-99-99
И создадим файл со стилями CSS под названием «style.css» (положим его рядом с index.php)
Обработчик подтверждения номера телефона по SMS вынесем в отдельный файл «act.php«. Его содержимое:
В обработчике формы обратите внимание на конфигурацию параметров в первых строках: необходимо указать:
В коде обработчика, в случае успешной валидации телефона, изменяете код под свои нужды.
Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой.
Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро.
Проверка адреса email и номера телефона на javascript
Предоставляя пользователю возможность заполнения полей на сайте, следует проверять введенные данные на валидность. Это позволит предупредить пользователя о случайных ошибках, а так же даст дополнительную защиту от спама. Ярким примером является форма обратной связи, обязательными полями которой часто бывают email и телефон. Займемся их проверкой на правильность заполнения с помощью javascript.
Информация лучше воспринимается на примерах, поэтому посмотрим готовую форму в действии:
Пожалуйста, заполните все поля формы!
Для начала разберем применяемые регулярные выражения, а полный код формы и javascript функций я приведу в конце статьи.
Валидность адреса электронной почты
Составим регулярное выражение для наших требований:
Разберём правило по частям:
Разобранный пример немного упрощен для лучшего восприятия. У него есть недостаток — первым знаком в email не может быть тире или точка, но приведенное регулярное выражение этого не учитывает. Чтобы это исправить следует его немного поправить:
Проверка валидности номера телефона в javascript
С номером телефона ситуация сложнее, так как номер можно ввести десятками способов:
Есть несколько выходов из ситуации:
Для форм обратной связи последний вариант кажется наилучшим. Во-первых, если человек не хочет указывать свой номер телефона, то никакие проверки на корректность не помогут. Он просто введет несуществующий или чужой номер. Во-вторых, посетители сайта не любят когда их загоняют в определенные рамки. Поэтому рекомендую использовать регулярное выражение следующего типа:
Для любителей жестких шаблонов приведу пример проверки номера вида 8 (999) 123-45-64
Исходный код примера: html и javascript
Это полный код тестовой странички, на которой я использовал форму и js скрипты для отладки правил из этой статьи. Можете скопировать его и протестировать у себя на компьютере.
Это демонстрационная версия. В случае с формой обратной связи нам следует проводить проверку полей не при нажатии на кнопку, а при попытке отправить её:
Регулярное выражение для проверки корректности телефона из формы
Новичок
Регулярное выражение для проверки корректности телефона из формы
Казалось бы что проще проверить телефон, уточняю корректность ввода.
Телефоны могут быть 8 (961) 56 45 324 и 211-30-42
С первой составляющей 8 (ххх) просто а вот 322 34 44
тут как то не получается.
ясно что только из \s и \d
[\s\d]+ это чтотто не очень корректно 3453 234523 34253 3443 345
привязывать к конкретно количеству цифр хотелось бы. Компоновка их не актуальна там допустим 23 333 22 или 233 11 11 или 2221111
[(\s)*(\d)]<4,9>$, попытался вот такое да работает и на ура, (да оговорюсь множественные пробелы предварительно уберем), работает только вот только на превышение символов, там 10 уже не пропускает, а один проходит тоже, как же с минимальным количеством.
подождите, появились мысли. Надо подумать.
Буду рад услышать Ваши мысли и решения. и соображения.
Всем удачи.
Вообще конечно сивмольный клас в множественный квантификатор это я загнул.
dimagolov
Новичок
Новичок
чет голова какая то пролезла, там двоеточие и скобки, а это интерпретация двоеточия и скобок открывающих.
dimagolov
Новичок
я выбрасываю не-цифры (фиг их знает как поставят разделители) и потом смотрю на минимальное кол-во цифр в номере. понятно, что тема с ext не корректно обработается, но это не так уж принципиально.
а что-то умней, так надо парсить формат номера так, как это делает АТС, начиная с первой цифры и регулярками это не делается.
phprus
Moderator
По нормальному надо чистить из номера все не цифры, проверять его длину и существование кода страны/города/сотового оператора( по вкусу)
Регулярное выражение Применять крайне не рекомендуется.
Реализовывал как огромный костыль для временной подпорки реализации.
Проверяет номер с указанием кода страны вида +КОДСТРАНЫ хххххххххх
Новичок
слишком много писал смайликов, и две прошло, где морда там двоеточие и открывающие скобки.
Валидация номера телефона на JS и jQuery
Способов валидации форм на стороне клиента, а именно поля ввода номера телефона (инпута) существует несколько, как и на стороне сервера. Для этих целей существуют специальные jQuery плагины, типа Inputmask, которые легко подключить и легко использовать. Но в этой статье мы их рассматривать не будем, а будем производить валидацию телефона при помощи регулярного выражения и совсем маленькой функции, которую можно будет использовать в последующем и других проектах. Для демонстрации предлагаю посмотреть и протестировать пример.
Валидация номера телефона на JS
Самое основное в этом деле — регулярное выражение (regex), которое, к счастью, не нужно придумывать самому, а просто взять готовое и внедрить. Сразу скажу, что данная регулярка проверяет российские номера телефонов. Первая конструкция, которую мы рассмотрим, выглядит так:
let regex = /^(\+7|7|8)?[\s\-]?\(?[489]9<2>\)?[\s\-]?5<3>[\s\-]?6<2>[\s\-]?6<2>$/; let phone = ‘89000000000’; // дальше идет проверка на соответствие выражению if(!regex.test(phone)< console.log('Не соответствует'); >else
То же самое можно записать в функцию валидации и вызывать ее где угодно в коде.
Теперь немного о том, для каких номеров будет происходить валидация, ведь один и тот же номер можно написать в разных форматах и очень важно сделать все правильно и протестировать на работоспособность иначе можно столкнуться с тем, что номера телефонов будут приходить в неверном формате и по ним невозможно будет дозвониться, а это уже потеря потенциальной прибыли и прямые убытки. Вот все форматы, которые пройдут валидацию:
89000000000 +79000000000 8-900-000-00-00 +7-900-000-00-00 8(900)0000000 8(900)000 00 00 +7 (900) 000 00 00 8(900)-000-00-00 +7(900)-000-00-00 +7(900)000-00-00 8 900 000 00 00 +7 900 000 00 00 8-(900) 000 00 00 +7-(900) 000 00 00 8-(900)-000-00-00 +7-(900)-000-00-00 7(999)999 99 99 79000000000 7-900-000-00-00 7-(900)-000-00-00 7(900)-000-00-00 7(900) 000 00 00 7 (900)-000-00-00 7 (900) 000 00 00 7 900 000 00 00 8000000000 9000000000 800 000 00 00 900 000 00 00 800-000-00-00 900-000-00-00 (800)-000-00-00 (900)-000-00-00
Валидация телефона на jQuery
Здесь все в точности то же самое, но пройдемся по HTML коду и разберем по полочкам все элементы, чтобы было более понятно. Допустим у нас есть вот такой инпут:
Затем пишем jQuery код.
Обычно валидация поля с телефоном происходит при отправке Ajax запроса без перезагрузки страницы. данный способ подойдет, если в форме есть всего несколько полей, к примеру имя и телефон. Если полей много и для каждого требуется проверка на корректность заполнения, то здесь лучше подключить соответствующий плагин, чтобы не изобретать велосипед и не писать кучу кода с нуля. Надеюсь, что все было понятно, если что — пишите комменты.