Проверка данных регулярными выражениями в PHP
Сборник основных шаблонов регулярных выражений на PHP для проверки данных.
Проверка набора из латинских букв и цифр
Регулярное выражение для проверки набора только из латинских букв и цифр:
$pattern = '/^[a-z0-9]+$/i'; $var = 'String123'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Если необходимо добавить в набор некоторые символы:
// использовать тире $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 { echo 'Проверка не пройдена!'; }
Проверка на число
Регулярное выражение для проверки данных на целое число:
$pattern = '/^\d+$/'; // Исключаем 0 $pattern = '/^[1-9]+$/'; // Не больше 1-й цифры $pattern = '/^[1-9]{1}+$/'; // Максимум 4 цифры $pattern = '/^[1-9]{1,4}+$/'; $var = 123; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
$pattern = '/^[0-9]*[.,][0-9]+$/'; $var = 123.45; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; } // Если нужно, чтобы пропускал и целые числа $pattern = '/^[0-9]*[.,]?[0-9]+$/';
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):
$text = 'Login_123-45'; if (preg_match("/^[a-z0-9-_]{2,20}$/i", $text)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка Email
Регулярное выражение для проверки Email:
$pattern = '/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/'; $var = 'admin@site.com'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Более современный и правильный способ:
$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{3}\)?[\- ]?)?[\d\- ]{7,10}$/'; $var = '+7(982)000-00-00'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка даты по формату
Формат DD.MM.YYYY
:
$pattern = '/^(0[1-9]|[12][0-9]|3[01])[\.](0[1-9]|1[012])[\.](19|20)\d\d$/'; $var = '10.12.2019'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Формат MySQL YYYY-MM-DD
:
$pattern = '/^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])$/'; $var = '2019-12-10'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка md5-хэша
Регулярное выражение для проверки на корректность md5-хэша:
$pattern = '/^[a-f0-9]{32}$/'; $var = '341be97d9aff90c9978347f66f945e77'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка IP адресов
Регулярное выражение для проверки IPv4
адреса:
$pattern = '/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/'; $var = '192.168.0.1'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка IPv6
адреса:
$pattern = '/((^|:)([0-9a-fA-F]{0,4})){1,8}$/i'; $var = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка доменного имени
Регулярное выражение для проверки на корректность доменного имени сайта:
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'; $var = 'https://prowebmastering.ru'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }