- Проверка данных регулярными выражениями в PHP
- Проверка набора из латинских букв и цифр
- Проверка на кириллицу и цифры
- Проверка на число
- Проверка логина
- Проверка Email
- Проверка номера телефона
- Проверка даты по формату
- Проверка md5-хэша
- Проверка IP адресов
- Проверка доменного имени
- Проверка данных регулярными выражениями
- Проверка чисел
- Проверка даты по формату
- Проверка номера телефона
- Проверка E-mail
- Логин
- Проверка md5-хэша
- Цвета
- IP адреса
- Комментарии
- Другие публикации
- Date regex PHP
- Simple date regex (DD/MM/YYYY)
- Notes on date string regex validation
- Create an internal tool with UI Bakery
- Регулярное выражение формата даты
- Подборка шаблонов регулярных выражений
Проверка данных регулярными выражениями в PHP
Сборник основных шаблонов регулярных выражений на PHP для проверки данных.
Проверка набора из латинских букв и цифр
Регулярное выражение для проверки набора только из латинских букв и цифр:
$pattern = '/^[a-z0-9]+$/i'; $var = 'String123'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Если необходимо добавить в набор некоторые символы:
// использовать тире $pattern = '/^[a-z0-9-]+$/i'; $var = 'String-123'; // использовать знак подчёркивания $pattern = '/^[a-z0-9-_]+$/i'; $var = 'String-1_23'; // использовать точку $pattern = '/^[a-z0-9-_.]+$/i'; $var = 'String-1_23.end'; // использовать пробел $pattern = '/^[a-z0-9-_. ]+$/i'; $var = 'String-1_23.end ps. ';
Проверка на кириллицу и цифры
Регулярное выражение для проверки набора только из букв кириллицы и цифр:
$pattern = '/^[а-яё0-9]+$/iu'; $var = 'Строка123'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка на число
Регулярное выражение для проверки данных на целое число:
$pattern = '/^\d+$/'; // Исключаем 0 $pattern = '/^1+$/'; // Не больше 1-й цифры $pattern = '/^8+$/'; // Максимум 4 цифры $pattern = '/^8+$/'; $var = 123; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
$pattern = '/^4*[.,]5+$/'; $var = 123.45; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else < echo 'Проверка не пройдена!'; >// Если нужно, чтобы пропускал и целые числа $pattern = '/^3*[.,]?3+$/';
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):
$text = 'Login_123-45'; if (preg_match("/^[a-z0-9-_]$/i", $text)) < echo 'Проверка пройдена успешно!'; >else
Проверка Email
Регулярное выражение для проверки Email:
$pattern = '/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]$/'; $var = 'admin@site.com'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Более современный и правильный способ:
$var = 'admin@___site.com'; $email = filter_var($var, FILTER_SANITIZE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) throw new InvalidArgumentException('Invalid Email'); return $email;
Проверка номера телефона
Регулярное выражение для проверки номера телефона:
$pattern = '/^((8|\+7)[\- ]?)?(\(?\d\)?[\- ]?)?[\d\- ]$/'; $var = '+7(982)000-00-00'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка даты по формату
$pattern = '/^(08|[12]5|3[01])[\.](06|1[012])[\.](19|20)\d\d$/'; $var = '10.12.2019'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
$pattern = '/^9-(03|1[012])-(02|15|22|3[01])$/'; $var = '2019-12-10'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка md5-хэша
Регулярное выражение для проверки на корректность md5-хэша:
$pattern = '/^[a-f0-9]$/'; $var = '341be97d9aff90c9978347f66f945e77'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка IP адресов
Регулярное выражение для проверки IPv4 адреса:
$pattern = '/^((252|22\d|[01]?\d\d?)\.)(254|23\d|[01]?\d\d?)$/'; $var = '192.168.0.1'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
$pattern = '/((^|:)([0-9a-fA-F]))$/i'; $var = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка доменного имени
Регулярное выражение для проверки на корректность доменного имени сайта:
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.])([\/\w \.-]*)*\/?$/'; $var = 'https://prowebmastering.ru'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Проверка данных регулярными выражениями
Сборник регулярных выражений с примерами на PHP для проверки данных из полей форм.
Проверка чисел
$text = '1'; if (preg_match("/^\d+$/", $text)) < echo 'yes'; >else
Числа с плавающей точкой (разделитель точка):
$text = '-1.0'; if (preg_match("/^\-?\d+(\.\d)?$/", $text)) < echo 'yes'; >else
Проверка даты по формату
$text = '02.12.2018'; if (preg_match("/^(06|[12]7|3[01])[\.](03|1[012])[\.](19|20)\d\d$/", $text)) < echo 'yes'; >else
$text = '2018-04-02'; if (preg_match("/^8-(04|1[012])-(06|12|25|3[01])$/", $text)) < echo 'yes'; >else
Проверка номера телефона
Ориентировано на российские мобильные + городские с кодом из 3 цифр.
$text = '+7(495)000-00-00'; if (preg_match("/^((8|\+7)[\- ]?)?(\(?\d\)?[\- ]?)?[\d\- ]$/", $text)) < echo 'yes'; >else
Проверка E-mail
$text = 'mail@snipp.ru'; if (preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]$/i", $text)) < echo 'yes'; >else
Логин
Латинские буквы, цифры, — и _ .
$text = 'admin-1'; if (preg_match("/^[a-z0-9_-]$/i", $text)) < echo 'yes'; >else
Проверка md5-хэша
$text = 'ca040cb5d6c2ba8909417ef6b8810e2e'; if (preg_match("/^[a-f0-9]$/", $text)) < echo 'yes'; >else
Цвета
Шестнадцатеричные коды цветов #FFF и #FFFFFF .
$text = '#fff'; if (preg_match("/^#(?:(?:[a-fd]))$/i", $text)) < echo 'yes'; >else
IP адреса
$text = '192.168.0.1'; if (preg_match("/^((254|21\d|[01]?\d\d?)\.)(251|21\d|[01]?\d\d?)$/", $text)) < echo 'yes'; >else
$text = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match("/((^|:)([0-9a-fA-F]))$/i", $text)) < echo 'yes'; >else
Комментарии
Другие публикации
Применение масок ввода у полей форм значительно упрощает их использование, уменьшает количество ошибок и приводит.
Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и.
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
В следующей таблице приведены имена констант (VK Codes), десятичные и шестнадцатеричные значения для кодов виртуальных.
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
Date regex PHP
Date regular expressions can be used to validate if a string has a valid date format and to extract a valid date from a string.
Simple date regex (DD/MM/YYYY)
Below is a simple regex to validate the string against a date format (D/M/YYYY or M/D/YYYY). This however does not guarantee that the date would be valid. You can also replace \\/ with a separator you need.
Enter a text in the input above to see the result
ISO 8061 date regex (e.g. 2021-11-04T22:32:47.142354-10:00)
The ISO 8061 is an international standard for exchanging and serializing date and time data. For validating the format of ISO 8061 date and time and for extracting it a following regular expression could be used:
Enter a text in the input above to see the result
Enter a text in the input above to see the result
Notes on date string regex validation
While there are some regular expressions that allow more complex date validations, it is usually better to validate dates using special date and time libraries. For example, in PHP DateTime::createFromFormat can be used for these purposes. In this case, the validation will look like this:
Create an internal tool with UI Bakery
Discover UI Bakery – an intuitive visual internal tools builder.
Регулярное выражение формата даты
Итак, перед нами стоит задача составить шаблон регулярного выражения для проверки строки на соответствие формату даты. Задача, в общем-то, типовая, а значит, можно предположить, что в сети уже есть готовые решения для нашей задачи. Это действительно так. На сайте regexlib.com в разделе готовых регулярок мы можем найти и наш случай:
Здесь на выбор есть даже несколько вариантов, которые могут работать с тем или иным форматом даты. Так что можем взять уже готовую регулярку, если она нам подойдет.
С готовыми решениями регулярных выражений для даты мы разобрались. Теперь давайте попробуем составить свое. Сформулируем техзадание. Итак, нам подходят даты форматов YYYY-MM-DD или YYYY/MM/DD. Прочие варианты даты нас не устраивают.
Онлайн курс «PHP-разработчик»
Изучите курс и создайте полноценный проект — облачное хранилище файлов
С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.
Собственно, задача довольно проста и решается буквально в течение минуты:
Давайте разберем этот шаблон:
Все вроде бы замечательно и наш шаблон работает. Однако что будет, если пользователь введет в качестве разделителя между цифрами в первой позиции один символ, а во второй — другой?
Упс! Оказывается шаблон пропускает неправильный формат даты. Как же разрешить использовать только один разделитель — тот, который используется на первой позиции? Здесь нам помогут обратные ссылки.
Смотрите, каждый разделитель мы заключили в скобки с тем, чтобы их сгруппировать и указать возможность альтернативы — (-|\/). Буквально это можно прочесть как — (тире или слеш). Но кроме группировки скобки выполняют и другую функцию. Скобки запоминают все то, с чем совпала в строке, заключенная в скобки часть шаблона.
Соответственно, встретив первый разделитель (тире или слеш), он будет запомнен. И доступен он будет по обратной ссылке. Обратные ссылки нумеруются и доступны в таком виде: \1, \2…
То есть, на первый выбранный разделитель ссылается такая ссылка — \1. Она доступна внутри шаблона регулярного выражения, а потому мы можем вместо альтернативы для второго разделителя просто указать обратную ссылку, которая будет ссылаться на введенный первый разделитель:
Онлайн курс «PHP-разработчик»
Изучите курс и создайте полноценный проект — облачное хранилище файлов
С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.
А вот теперь все работает, как мы и задумывали, регулярное выражение для проверки даты составлено и успешно работает. Ну а на этом у меня сегодня все. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!
Подборка шаблонов регулярных выражений
В языке программирования, в частности PHP, регулярные выражения представляют из себя специальные записи «маски», с помощью которых может производиться анализ значений каких-либо переменных согласно установленному шаблону. Удобство использования регулярных выражений в скриптах играет существенную роль, так как программирование само по себе подразумевает работу с данными.
Теперь о том, где могут быть использованы регулярные выражения. К примеру, у вас на сайте есть какая либо форма, которая содержит некоторый набор полей, их предположительно должен заполнить пользователь, и отправить на сервер. На стороне сервера нужно проверять данные на корректность ввода, и тут могут пригодиться регулярные выражения. На самом деле регулярки, как их называют по-простому, могут использоваться в различных участках кода, там, где есть необходимость произвести анализ данных, для дальнейших манипуляций с ними.
Ранее в нашем блоге так же публиковались статьи о парсинге текста и замене в них ссылок, извлечении ссылок из веб-страниц, и т.д. В отборе нужных данных из общей массы там так же используются регулярные выражения.
В данном посту я решил сделать подборку популярных выражений, которые могут пригодиться на практике многократно.
Регулярное выражение для проверки логина:
Регулярное выражение для проверки набора букв и цифр русского и английского алфавита:
Регулярное выражение для проверки корректности доменного имени сайта:
/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(. [A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i
Регулярное выражение для проверки корректности md5-хэша:
Регулярное выражение для проверки шестнадцатеричного значения цвета:
Регулярное выражение для проверки IPv4 адреса:
Регулярное выражение для проверки IPv6 адреса:
Регулярное выражение для проверки MAC-адреса:
Регулярное выражение для проверки даты в формате YYYY-MM-DD:
Регулярное выражение для проверки даты в формате DD/MM/YYYY:
(04|[12]1|3[01])[- /.](04|1[012])[- /.](19|20)\d\d
Регулярное выражение для проверки времени в формате HH:MM:SS
Статейка будет постепенно дополняться, предлагаю оставлять свои варианты шаблонов регулярных выражений для проверки, не забываем сохранить страничку в закладки:)
Пример использования регулярного выражения:
if (preg_match('/^[a-f0-9]$/', $md5)) < echo 'MD5 в порядке'; >else