Регулярное выражение проверки на число

Регулярное выражение проверки на число

От автора: приветствую вас, друзья. В этой статье мы уже непосредственно начнем изучать возможности регулярных выражений, познакомимся с функцией preg_match() в PHP, а также составим первое регулярное выражение проверки на число.

Начать статью, пожалуй, стоит с того, что регулярные выражения — это очень мощное средство для работы с текстом. Как вы уже знаете, с помощью регулярных выражений мы можем отыскать в массиве текста буквально что угодно. Однако злоупотреблять такой мощью не стоит. Не забывайте о том, что PHP предлагает нам массу функций для работы со строками, типами и так далее, которые позволяют проверить, скажем, наличие определенного символа или подстроки в строке.

Поэтому, если есть возможность решить задачу без привлечения регулярных выражений, тогда стоит использовать эту возможность, поскольку функции для работы с регулярными выражениями, как правило, более ресурсоемки. В данном случае задачу можно решить и без регулярных выражений. Например, проверить являются ли все символы в строке числовыми можно с помощью функции ctype_digit().

Но по условиям поставленной в статье задачи нам необходимо использовать регулярные выражения, поэтому решим поставленную задачу, используя функцию preg_match(). Данная функция проверяет строку на соответствие шаблону регулярного выражения. Функция имеет 5 параметров, из которых на практике практически всегда используются только первые 2.

Первый параметр функции будет шаблоном регулярного выражения. Второй — проверяемая строка. Иногда может понадобится третий параметр, указав который мы получим массив с результатами поиска.

Давайте же составим свой первый шаблон. Выглядеть он может следующим образом:

$pattern = '#^[0-9]+$#';

На первый взгляд может выглядеть непонятно и несколько пугающе. Однако ничего страшного здесь нет, сейчас мы его разберем. Начнем с того, что регулярные выражения активно используют специальные символы, т.н. метасимволы. В нашем шаблоне их достаточно много:

^ — метасимвол начала строки

$ — метасимвол конца строки

[] — метасимволы символьного класса

+ — квантификатор, обозначающий 1 или более вхождений символа или группы символов, после которых использован квантификатор.

Итого, что же мы получили? Как можно прочесть составленный шаблон регулярного выражения? А читается он так:

строка будет валидироваться целиком, от начала до конца (метасимволы ^$)

в строке могут быть только цифры от 0 до 9 ([0-9])

в строке должна быть как минимум одна цифра (+)

Теперь давайте проверим шаблон в действии.

Как видим, регулярное выражение работает корректно. Под него подошли только строки, полностью состоящие из цифр. Кстати, если вы тестируете также на сайте regexr.com и в тексте более одной строки, тогда для шаблона необходимо указать специальный флаг — m, что позволит шаблону работать с многострочным текстом. Сделать это можно в правом верхнем углу, пункт меню flags.

Обратите внимание, что произойдет, если мы уберем метасимволы начала и/или конца строки:

Теперь мы вадидируем не всю строку целиком, а просто ищем что-то в строке. В итоге в третьей строке были найдены цифры, хотя по условию задачи эта строка нам не подходит. Теперь давайте используем функцию preg_match и проверим каждую из строк по отдельности:

$arr = ['123', 'test', '45ew45', '456'];
$pattern = '#^[0-9]+$#';

foreach($arr as $item){
	if( preg_match($pattern, $item) ){
		echo "<p>Строка <b>$item</b> содержит только цифры</p>";
	}else{
		echo "<p>Строка <b>$item</b> не подходит</p>";
	}
}

В результате мы увидим то, что и предполагали:

Как видим, все работает отлично! На этом мы будем завершать данную статью. Напоминаю, что больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!

Хотите изучить регулярные выражения на PHP?

Прямо сейчас посмотрите 12-ти часовой курс по регулярным выражениям на PHP!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree