Регулярний вираз перевірки на число

21

Від автора: вітаю вас, друзі. У цій статті ми вже безпосередньо почнемо вивчати можливості регулярних виразів, познайомимося з функцією 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 «

Рядок $item містить тільки цифри

«;
}else{
echo «

Рядок $item не підходить

«;
}
}

В результаті ми побачимо, що і передбачали:

Регулярний вираз перевірки на число

Як бачимо, все працює відмінно! На цьому ми будемо завершувати цю статтю. Нагадую, що більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!