- Проверка данных регулярными выражениями в PHP
- Проверка набора из латинских букв и цифр
- Проверка на кириллицу и цифры
- Проверка на число
- Проверка логина
- Проверка Email
- Проверка номера телефона
- Проверка даты по формату
- Проверка md5-хэша
- Проверка IP адресов
- Проверка доменного имени
- Регулярные выражения для того, чтобы оставить в строке PHP только цифры
- Наша реальность
- Другие примеры
- Обрезание строк
- Numbers only regex (digits only) PHP
- Basic numbers only regex
- Real number regex
- Use filter_var() Function to Extract Numbers From a String in PHP
- Use preg_replace() Function to Extract Numbers From a String in PHP
- Related Article - PHP String
Проверка данных регулярными выражениями в 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 = '/^3+$/'; // Не больше 1-й цифры $pattern = '/^3+$/'; // Максимум 4 цифры $pattern = '/^8+$/'; $var = 123; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
$pattern = '/^5*[.,]9+$/'; $var = 123.45; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else < echo 'Проверка не пройдена!'; >// Если нужно, чтобы пропускал и целые числа $pattern = '/^6*[.,]?8+$/';
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 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]3|3[01])[\.](04|1[012])[\.](19|20)\d\d$/'; $var = '10.12.2019'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else
$pattern = '/^5-(07|1[012])-(09|19|28|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 = '/^((251|22\d|[01]?\d\d?)\.)(253|22\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 только цифры
От автора: моя племянница решила стать писателем-фантастом. Это девятилетнее дарование несколько дней пыталась придумать сюжет будущего шедевра, не забывая попутно «пытать» и своих родственников. В результате она нафантазировала мир, в котором вместо букв используются цифры. Тогда в этой мире будут в PHP только цифры?
Наша реальность
Но вернемся в нашу реальность, где цифры – это цифры, а буквами пишут слова. И опять сегодня речь пойдет о регулярных выражениях. Только с их помощью можно правильно просеять содержимое и получить искомую строчку, сочетание символов или просто цифры. Поиском последних и займемся. Но сначала определимся, что мы хотим сделать с найденными цифрами.
С помощью PHP оставляем только цифры:
Онлайн курс «PHP-разработчик»
Изучите курс и создайте полноценный проект — облачное хранилище файлов
С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.
Теперь разберемся, что делает функция preg_replace(). Первым аргументом она принимает шаблон, по которому будет происходить поиск значений в строке $str1 (третий аргумент) и затем заменять найденное на второй аргумент (пробел).
Рассмотрим поближе регулярку: /[^0-9]/
В шаблоне указано, что нужно находить все символы, кроме цифр. В свою очередь preg_replace() нашла значения, соответствующие регулярному выражению и заменила на пробел. Таким образом мы реализовали ввод только цифр с помощью PHP.
Другие примеры
«Окунемся» глубже и модифицируем шаблон. Для этого используем в синтаксисе регулярных выражений метасимволы: \d – означает любую цифру, \D – обозначает любой символ, не являющийся цифрой.
Применим эти метасимволы в следующих примерах. В первом из них мы задействуем еще одну функцию PHP, которая предназначена для работы с регулярками.
Понятно, что в этом примере не используется регулярное выражение PHP только цифры оставляющее в строке. Тем не менее, такой вариант реализации тоже востребован. Его можно применять для проверки соблюдения пользователями синтаксиса пароля, устанавливаемого во время регистрации.
Но вернемся к новой функции – preg_match(). В отличие от предыдущей эта ничего не меняет и не вырезает. Она лишь «отвечает», присутствует ли в строке $str1значение, которое подходит под регулярное выражение, переданное в качестве первого аргумента.
Также с помощью приведенных в примерах регулярок можно в PHP оставлять только цифры в строке. Рассмотрим шаблоны поближе:
Самым коротким из них является второй вариант. В первом дополнительно используется символ отрицания («^»). Если он указан в начале шаблона, то это говорит о том, что нужно искать все кроме указанных далее диапазонов символов.
Обрезание строк
Но вернемся к выполнению нашей главной задачи – как в тексте с помощью PHP оставить только буквы и цифры. Поработаем теперь с диапазонами. В самом первом скрипте мы использовали регулярное выражение, в котором не применялись модификаторы: /[^0-9]/
То есть, все символы, кроме цифр от нуля и до 9. А можно ли сузить этот диапазон? Давайте пробовать методом «тыка» :).
Numbers only regex (digits only) PHP
Numbers only (or digits only) regular expressions can be used to validate if a string contains only numbers.
Basic numbers only regex
Below is a simple regular expression that allows validating if a given string contains only numbers:
Enter a text in the input above to see the result
Real number regex
Real number regex can be used to validate or exact real numbers from a string.
Enter a text in the input above to see the result
Enter a text in the input above to see the result
Notes on number only regex validation
In PHP you can also validate number by using is_numeric function:
Create an internal tool with UI Bakery
Discover UI Bakery – an intuitive visual internal tools builder.
Extract Numbers From a String in PHP
- Use preg_match_all() Function to Extract Numbers From a String in PHP
- Use filter_var() Function to Extract Numbers From a String in PHP
- Use preg_replace() Function to Extract Numbers From a String in PHP
In this article, we will introduce methods to extract numbers from a string in PHP.
- Using preg_match_all() function
- Using filter_variable() function
- Using preg_replace() function
Use preg_match_all() Function to Extract Numbers From a String in PHP
We can use the built-in function preg_match_all() to extract numbers from a string . This function globally searches a specified pattern from a string . The correct syntax to use this function is as follows:
preg_match_all($pattern, $inputString, $matches, $flag, $offset);
This function returns a Boolean variable. It returns true if the given pattern exists.
The program below shows how we can use the preg_match_all() function to extract numbers from a given string .
php $string = 'Sarah has 4 dolls and 6 bunnies.'; preg_match_all('!\d+!', $string, $matches); print_r($matches); ?>
We have used !\d+! pattern to extract numbers from the string .
Array ( [0] => Array ( [0] => 4 [1] => 6 ) )
Use filter_var() Function to Extract Numbers From a String in PHP
We can also use the filter_var() function to extract numbers from a string . The correct syntax to use this function is as follows:
filter_var($variableName, $filterName, $options)
The function filter_var() accepts three parameters. The detail of its parameters is as follows
We have used FILTER_SANITIZE_NUMBER_INT filter. The program that extracts numbers from the string is as follows:
php $string = 'Sarah has 4 dolls and 6 bunnies.'; $int = (int) filter_var($string, FILTER_SANITIZE_NUMBER_INT); echo("The extracted numbers are: $int \n"); ?>
The extracted numbers are: 46
Use preg_replace() Function to Extract Numbers From a String in PHP
In PHP, we can also use the preg_replace() function to extract numbers from a string . The correct syntax to use this function is as follows:
preg_replace($regexPattern, $replacementVar, $original, $limit, $count)
We will use the pattern /[^0-9]/ for finding numbers in the string . The program that extracts numbers from the string is as follows:
php $string = 'Sarah has 4 dolls and 6 bunnies.'; $outputString = preg_replace('/[^0-9]/', '', $string); echo("The extracted numbers are: $outputString \n"); ?>
The extracted numbers are: 46
Related Article - PHP String
Copyright © 2023. All right reserved