Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених темі регулярних виразів і в цій статті ми познайомимося з одним з найбільш популярних метасимволів в регулярних виразах — це символ крапка. Почнемо?
Почнемо відразу з того, що ж означає символ крапки в регулярних виразах. В шаблоні регулярного виразу точка співпадає з будь-яким символом, крім переведення рядка (за замовчуванням). Якщо ми хочемо, щоб точка збігалася також і з символом переведення рядка, в PHP ми можемо використовувати модифікатор шаблону s.
Давайте одразу перейдемо до прикладів. Напишемо декілька довільних рядків тексту і використовуємо крапку в шаблоні.
Як бачимо, точка дійсно збігається з будь-яким символом: букви, цифри, пробіл, точка, кома і т. д. При цьому точка співпадає з одним символом, але завдяки модификатору g пошук не обмежується першим збігом і продовжується далі. У результаті знайдено 21 збіг (кількість збігів можна побачити в правому верхньому куті сервісу regexr.com).
Якщо ми додамо квантіфікатор + після крапки, то тим самим задамо пошук співпадаючих символів від одного до нескінченності.
Тепер знайдено 3 збіги за кількістю рядків). Оскільки точка не співпадає з символом переведення рядка, шаблон знайде збіг до кінця рядка.
А що, якщо ми хочемо знайти саме точку? Як бути в такому випадку? Тут є два варіанти. Перший — використання символу екранування, яким є зворотний слеш (\). Вказавши слеш перед метасимволом, ми тим самим экранируем метасимвол і він буде трактуватися, як звичайний символ, тобто в даному випадку, як просто точка.
Тепер знайдена тільки крапка. Інший варіант — поставити крапку в символьний клас, де вона розглядається як звичайний символ:
Ну і як практики давайте напишемо найпростіший шаблон регулярного виразу, який буде валідувати адреси email. Відразу обмовлюся, що цей шаблон не буде мати навчальний характер і не призначений для валідації всіх можливих варіантів email, але для більшості адрес він цілком згодиться.
Все працює. Зверніть увагу, точка перед останньою частиною доменного імені екранована. Це зроблено для того, щоб вона сприймалася саме як точка. Якщо ж ми приберемо екрануючий слеш, тоді точка буде збігатися з будь-яким символом і наш шаблон пропустить некоректний email:
На цьому ми будемо завершувати сьогоднішню статтю. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!