регулярные выражения php примеры

Популярные примеры работы регулярных выражений в PHP

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

Примеры preg_replace PHP

1. Удаляем определённую ссылку в переменной text

2. Удаляем комментарии в переменной text

3. Удаляем спецсимволы

4. Удаляем всё, что между

5. Удаляем всё, что между

6. Удаляем конкретные символы из строки

7. Удаляем пробелы по бокам строки и обычные пробелы

8. Удаляем лишние переводы строк и переносы

9. Удаляем расширения в названиях файлов

10. Создаём функцию обработки текста

11. Найти содержимое определённого тега и вставить его в другие теги

13. Добавить или убрать текст в начале или конце переменной с текстом

14. Находим все http:// и заменяем на ссылки

15. Удаление GET-параметров из URL

16. Добавить тег br в начало или конец строк

17. Как конвертировать html в текст

18. Как разобрать email и сделать ссылку

Примеры preg_match PHP

1. проверка mail адреса на корректность

2. Найти mail адреса в тексте

3. Является ли переменная числом, длиной от 13 до 16 символов (проверка кредитной карты)

4. Проверка имени файла

5. Ищем в тексте мобильные телефоны РФ

6. Состоит ли строка только из букв, цифр и _, длиной от 8 до 20 символов:

7. Есть ли в строке идущие подряд символы, не менее 3-х символов подряд (типа абвгДДДеё, но не ааббаабб):

8. Поиск в разных частях строки конструкции:

9. Проверки на тип браузера. Возвращает true если browser = Netscape 2, 3 or MSIE 3.

Примеры ereg PHP

1. Проверка mail адреса в тексте

Источник

Регулярные выражения в PHP

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Здравствуй уважаемый читатель блога LifeExample, с момента публикации последней статьи прошло много времени, сегодня у меня появилось свободное время на написание новой. В этой статье я собираюсь систематизировать информацию об использовании регулярных выражений в PHP, собранную с разных сайтов.

Так сложилось, что последнее время мне часто приходится сталкиваться с проблемой поиска подстроки в тексте, причем эта подстрока может иметь не фиксированный набор символов. На примитивном уровне работы с текстом можно использовать стандартные функции PHP:

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

Регулярное выражениеэто формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.

Проще говоря, регулярное выражение представляет собой набор символов, описывающих правило поиска подстроки.
Для того чтобы было понятнее, сразу приведу легкий пример регулярного выражения в действии.

Предположим, у нас имеется строка:

Если применить к этой известной скороговорке регулярное выражение вида:

На первый взгляд, запись регулярного выражения выглядит устрашающе, но как говорится: «Не так страшен черт, каким его малюют!».

Сейчас я вам объясню принцип формирования шаблона для регулярного выражения.

Первое, что необходимо понять: не все символы в нашем наборе относятся к сути описания шаблона! Посмотрите внимательно на следующие регулярные выражения:

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

Откинув из нашего выражения разделители и служебные модификаторы, мы получим чистый шаблон регулярного выражения:

Под действие данного шаблона попадут все подстроки в тексте, которые отвечают следующим правилам:

Рассмотренный пример, только, маленькая капля в море возможностей регулярных выражений.

Функцией preg_match удобно пользоваться, когда нужно найти только одно слово в тексте, удовлетворяющее шаблону, либо просто проверить наличие искомой последовательности.

Если ищется набор подстрок из текста, тогда нужно использовать preg_match_all, она возвращает массив со всеми найденными значениями.

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

В результате работы функции должен вернуться массив:

В этом случае, получим массив:

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

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

Таблица метасимволов

МетасимволЗначение
\dЦифра (0-9)
\DНе цифра (любой символ кроме символов 0-9).
\sПустой символ (обычно пробел и символ табуляции).
\SНепустой символ (все, кроме символов, определяемых метасимволом \s).
\wВсе буквы, все цифры и знак подчеркивания (‘_’).
\WВсе, кроме символов, определяемых метасимволом \w.
\nСимвол перевода строки.
\rСимвол возврата каретки.
\tСимвол табуляции
\xhhВставка символа с шестнадцатиричным кодом 0xhh, например \x41 вставит латинскую букву ‘A’.
^Начало строки.
$Конец строки.
|Метасимвол выбора.
*Ноль или более символов.
+Одно или более символов.
?Встречается один раз, либо ноль.
<>Квантификатор, указывает количество повторений метасимволов. <4,6>(От 4 до 6 повторений).
\AНачало строки.
\ZКонец строки.
\zКонец текста.
\bГраница слова.
\BНе граница слова.
\GПредыдущий успешный поиск.

Таблица модификаторов

Таблица примитивных полезных шаблонов

ШаблонОписание
[0-9A-Fa-f]Цифра в шестнадцатеричной системе счисления.
[02468]Четная цифра.
[^\d]Все, кроме цифр.
/\d\d\d/Трехзначное число.
[^-0-9]Любой символ, кроме минуса и цифры.
/^[a-zA-Z0-9]+$/Строка состоящая только из букв латинского алфавита и цифр.
[^\s]Все что не пробел.
[^\s.]Все что не пробел и не точка.
foo$Строка заканчивается на “foo”.
(gif|jpg)Означает как “gif” так и “jpeg”.
^[a-zA-Z0-9_]<1,>$Любое слово, хотя бы одна буква, число или “_”.
(^A-Za-z0-9)Любой символ (не число и не буква).
/b(word)b/выбор из строки слова “word”.

Таблица сложных и полезных шаблонов

Пример регулярного выражения в php

Пример проверки e-mail с помощью регулярных выражений. Очень часто появляется потребность использовать вот такую проверку:

Читайте также похожие статьи:

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Источник

Регулярные выражения PHP

Что такое регулярное выражение?

Регулярные выражения в PHP (с англ. RegEx или regex) представляют собой последовательность символов, описывающих специальные шаблоны, которые применяются для различных вариантов обработки текста: проверки, поиска и замены того или иного фрагмента, состоящего из букв, цифр или любых других символов, в том числе специальных символов и символов пунктуации.

Синтаксис регулярных выражений

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

Функции регулярных выражений

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

ФункцияОпределение
preg_match()Эта функция ищет конкретный образец в некоторой строке. Он возвращает 1 (true), если шаблон существует, и 0 (false) в противном случае.
preg_match_all()Эта функция ищет все вхождения шаблона в строке. Она возвращает количество найденных совпадений с шаблоном в строке, или 0 — если вхождений нет. Функция удобна для поиска и замены.
ereg_replace()Эта функция ищет определенный шаблон строки и возвращает новую строку, в которой совпадающие шаблоны были заменены другой строкой.
eregi_replace()Функция ведет себя как ereg_replace() при условии, что поиск шаблона не чувствителен к регистру.
preg_replace()Эта функция ведет себя как функция ereg_replace() при условии, что регулярные выражения могут использоваться как в шаблоне так и в строках замены.
preg_split()Функция ведет себя как функция PHP split(). Он разбивает строку на регулярные выражения в качестве параметров.
preg_grep()Эта функция ищет все элементы, которые соответствуют шаблону регулярного выражения, и возвращает выходной массив.
preg_quote()Эта функция принимает строку и кавычки перед каждым символом, который соответствует регулярному выражению.
ereg()Эта функция ищет строку, заданную шаблоном, и возвращает TRUE, если она найдена, иначе возвращает FALSE.
eregi()Эта функция ведет себя как функция ereg() при условии, что поиск не чувствителен к регистру.

Функция preg_match()

Функция preg_match() выполняет проверку на соответствие регулярному выражению.

Пример. Поиск подстроки «php» в строке без учета регистра:

Пример

Результат выполнения кода:

В примере выше символ «i» после закрывающего ограничителя шаблона означает регистронезависимый поиск, поэтому вхождение будет найдено.

Примечание: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Для этого используйте strpos() или strstr(), т.к. они выполнят эту задачу гораздо быстрее.

Функция preg_match_all()

Функция preg_match_all() выполняет глобальный поиск шаблона в строке.

В примере регулярное выражение используется для подсчета числа вхождений «ain» в строку без учета регистра:

Пример

Результат выполнения кода:

Функция preg_replace()

Функция preg_replace() выполняет поиск и замену по регулярному выражению.

В следующем функция выполняет поиск в строке совпадений с шаблоном pattern и заменяет их на replacement:

Пример

Результат выполнения кода:

Модификаторы регулярных выражений

Модификаторы указываются либо в скобках, например так: (?Ui), либо после закрывающего символа ‘/pattern/Ui’.

МодификаторОписание
iВыполняет поиск без учета регистра. Например «/a/i» ищет и a, и A.
mВыполняет многострочный поиск (шаблоны, которые ищут начало или конец строки, будут соответствовать началу или концу каждой строки)
uОбеспечивает правильное сопоставление шаблонов в кодировке UTF-8 (для поиска русского текста например).
UИнвертирует «жадность» (по умолчанию жадный, т.е. пытается захватить как можно большую строку, подходящую по условию).
sЕсли используется, то символ точка (.) соответствует и переводу строки. Иначе она ему не соответствует.
xИгнорировать пробелы. В этом случае пробелы нужно экранировать обратным слэшем \.

При использовании модификаторов, можно использовать знак минус (-) для отключения модификатора. Например: (?m-i) — включаем многострочный поиск и отключаем регистронезависимый.

Шаблоны регулярных выражений

Квадратные скобки ([]) используются для нахождения ряда символов:

ВыражениеОписание
[abc]Один из символов a, b, c
[^abc]Любой символ кроме a, b, c
4Любой символ из диапазона от 0 до 9
[a-zА-Я]Любой символ из диапазонов

Метасимволы

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

Одним из основных метасимволов является обратный слэш (\), который меняет тип символа, следующего за ним, на противоположный. Таким образом обычный символ можно превратить в метасимвол, а если это был метасимвол, то он теряет свое специальное значение и становится обычным символом. Этот приём нужен для того, чтобы вставлять в текст специальные символы как обычные. Например, символ d в обычном режиме не имеет никаких специальных значений, но \d — это уже метасимвол, который обозначает: «любая цифра». Символ точка (.) в обычном режиме значит — «любой единичный символ», а экранированная точка (\.) означает просто точку.

МетасимволОписаниепример
.Соответствует любому одиночному символу, кроме новой строки././ соответствует строке, состоящей из одного символа.
^Соответствует началу строки./^cars/ соответствует любой строке, которая начинается с cars.
$Соответствует шаблону в конце строки./com$/ соответствует строке, заканчивающейся на com, например gmail.com
*Соответствует 0 или более вхождений./com*/ соответствует commute, computer, compromise и т.д.
+Соответствующий предыдущему символу появляется как минимум один раз.Например, /z+oom/ соответствует zoom.
\Используется для удаления метасимволов в регулярном выражении./google\.com/ будет рассматривать точку как буквальное значение, а не как метасимвол.
a-zСоответствует строчным буквам.cars
A-ZСоответствует буквам в верхнем регистре.CARS
0-9Соответствует любому числу от 0 до 9./0-5/ соответствует 0, 1, 2, 3, 4, 5
[…]Соответствует классу символов./[pqr]/ соответствует pqr
|Разделяет перечисление альтернативных вариантов./(cat|dog|fish)/ соответствует cat или dog или fish
\dЛюбая цифра./(\d)/ соответствует цифре
\sНайти пробельный символ (в т.ч. табуляция)./(\s)/ соответствует пробелу
\bГраница слова (начало или конец)./\bWORD/ найти совпадение в начале слова

Повторения (квантификаторы)

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

Повторения символов или комбинаций описываются с помощью квантификаторов (метасимволов, которые задают количественные отношения). Есть два типа квантификаторов: общие (задаются с помощью фигурных скобок <> ) и сокращенные (сокращения наиболее распространенных квантификаторов). Фигурные скобки x <1,7>задают число повторений предыдущего символа (в этом случае выражение ищет от 1 до 7 идущих подряд букв «x»).

КвантификаторОписанте
a+Один и более раз a
a*Ноль и более раз a
a?Одна a или пусто
a

3 раза a
a

От 3 до 5 раз a
a

3 и более раз a

Группировка

Пример

Результат выполнения кода:

ВыражениеОписание
^[a-zA-Z0-9_]<1,>$Любое слово, хотя бы одна буква, число или _
+@[a-z0-9A-Z]Соответствует строке с символом @ в начале, за которым следует любая буква нижнего регистра, число от 0 до 9 или буква верхнего регистра.
([wx])([yz])wy, wz, xy, или xz
[a-z]+Один или более символов нижнего регистра

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

Источник

Регулярные выражения PHP

Что такое регулярные выражения PHP?

Для чего используются регулярные выражения:

Регулярные выражения PHP

Теперь рассмотрим практические примеры использования упомянутых выше функций.

Preg match PHP

В приведенном ниже коде показан вариант реализации данного примера:

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Preg split PHP

Мы возьмем фразу и разобьем ее на массив; шаблон предназначен для поиска единичного пробела:

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Preg replace PHP

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Метасимволы

МетасимволОписаниеПример
.Обозначает любой единичный символ, кроме символа новой строки././ — все, что содержит один символ.
^Обозначает начало строки, не включая символ /./^PH/ — любая строка, которая начинается с PH.
$Обозначает шаблон в конце строки./com$/ — guru99.com,yahoo.com и т.д.
*Обозначает любое количество символов, ноль или больше./com*/ — computer, communication и т.д.
+Требуется вхождение перед метасимволом символа (ов) хотя бы один раз./yah+oo/ — yahoo.
Символ экранирования./yahoo+.com/ — воспринимает точку, как дословное значение.
[…]Класс символов./[abc]/ — abc.
a-zОбозначает строчные буквы./a-z/ — cool, happy и т.д.
A-ZОбозначает заглавные буквы./A-Z/ — WHAT, HOW, WHY и т.д.
0-9Обозначает любые цифры от 0 до 9./0-4/ — 0,1,2,3,4.

Теперь рассмотрим сложный PHP regexp пример, в котором проверяется валидность адреса электронной почты:

Результат: адрес электронной почты name@company.com является валидным.

Пояснение шаблона «[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]<2,5>$/] «

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Метасимволы являются полезными, когда речь идет о сопоставлении на соответствие шаблонам.

Заключение

Пожалуйста, оставьте ваши комментарии по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, отклики, лайки, дизлайки, подписки!

Источник

PHP и регулярные выражения: азы для новичков

В преддверии старта нового потока по курсу «Backend-разработчик на PHP», а также смежного с ним курса «Framework Laravel», хотим поделиться статьей, которую подготовил наш внештатный автор.

Внимание! данная статья не имеет отношения к программе курса и будет полезна только для новичков. Для получения более углубленных знаний приглашаем вас посетить бесплатный двухдневный онлайн интенсив по теме: «Создание Telegram-бота для заказа кофе в заведении и оплаты онлайн». Второй день интенсива будет проходить тут.

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Всем привет! Всех с наступившим [20]<2,>0 годом. Сегодня я хочу затронуть тему, которая иногда является темой для шуток от «Да зачем тебе все это учить, если есть уже есть готовые решения» до «может тебе еще и весь Perl выучить?». Однако время идет, множество программистов начинают осваивать регулярные выражения, а на Хабре нет ни одной свежей (хоть регулярные выражения не слишком изменились за последнее время) статьи на этой тематику. Пришло время написать ещё одну!

Регулярные выражения в отрыве от их конкретной реализации

Регулярные выражения (обозначаемые в английском как RegEx или как regex) являются инструментальным средством, которое применяется для различных вариантов изучения и обработки текста: поиска, проверки, поиска и замены того или иного элемента, состоящего из букв или цифр (или любых других символов, в том числе специальных символов и символов пунктуации). Изначально регулярные выражения пришли в мир программирования из среды научных исследований, которые проводились в 50-е годы в области математики.

Спустя десятилетия принципы и идеи были перенесены в среду операционной системы UNIX (в частности вошли в утилиту grep ) и были реализованы в языке программирования Perl, который на заре интернета широко использовался на бэкенде (и по сей день используется, но уже меньше) для такой задачи, как, например, валидация форм.

регулярные выражения php примеры. Смотреть фото регулярные выражения php примеры. Смотреть картинку регулярные выражения php примеры. Картинка про регулярные выражения php примеры. Фото регулярные выражения php примеры

Если они вроде простые, тогда почему такие страшные на первый взгляд?

На самом деле любое выражение может быть «регулярным» и применяться для проверки или поиска каких-либо символов. Например, слова Pavel или example@mail.ru тоже могут использоваться как регулярки, только, понятное дело, в довольно узком ключе. Для проверки работы регулярных выражений в среде PHP без запуска своего сервера или хостинга вы можете воспользоваться следующим онлайн сервисом (вот только на нем у меня не работала обработка русских символов). Для начала в качестве регулярного выражения мы используем просто Pavel.

Положим у нас есть следующий текст:

Pavel knows too much. Pavel using nginx and he’s not rambler.

Сейчас регулярные выражения нашли оба вхождения слова Pavel. Здорово, но звучит не очень полезно (разве что только вы зачем-то пытаетесь проанализировать что-то вроде количества упоминания слова сударь в Войне и Мире через Vim и Python, но тогда у меня к вам вопросов нет).

Вариативность выражения

Если ваше регулярное выражение вариативно (например, вам известна только некоторая его часть и нужно найти количество вхождений годов, начиная от 2000 и заканчивая 2099), то мы можем использовать следующее регулярное выражение: 20..

Текст: Молодые писатели пишут много чего. Например писатель 2002 года рождения очень отличается от 2008 и 2012

Здесь у нас с помощью регулярного выражения найдутся все годы, но пока в этом нет никакого смысла. Скорее всего нам не нужны годы дальше 2012 (хотя молодые писатели младше 8 лет могут обидеться, но не об этом сейчас). Стоит изучить наборы символов, но об этом попозже, потому как сейчас поговорим про другую важную часть регулярных выражений: экранирование метасимволов.

Регулярное выражение: \.doc

Совпадение с целым набором символов

Регулярное выражение: 1\.jpg

Текст: 1.jpg, 2.jpg, 3.jpg, photo.jpg, anime.jpg, 8.jpg, jkl.jpg

Стоит отметить, что имя файлов из более 1 цифры наше регулярное выражение не охватит. Про множественный выбор будет чуть ниже, а пока представим, что нам вдруг понадобилось добиться обратного результата. Добавим метасимвол ^ (у которого, самое противное, в регулярных выражениях есть аж две функции). Чтобы воспользоваться им как исключением, нужно добавить его именно внутрь нашего набора:

Регулярное выражение: [^0-9]\.jpg

Но без множественного выбора это конечно неполноценные выражения.

Полезные таблицы

Приведем таблицу метасимволов:

\экранировать метасимвол как обычный символ
^искать определенный символ именно в начале строки (но только если исключить его из набора [])
$конец строки
|альтернатива
()группировка
\wвсе буквенно и цифровые символы (многие руководства почему-то не договаривают про цифровые символы)
\Wтоже самое, только наоборот
\sлюбой пробельный символ
\Sлюбой НЕ пробельный символ

Таблица пробельных метасимволов

[\b]возврат на один символ
\fперевод страницы
\nперевод строки
\rвозрат каретки
\tтабуляция
\vвертикальная табуляция

Множественный выбор: делаем простую валидацию

Регулярное выражение: \b\w<1,3>\b:

Неплохо! Теперь слова короче трех букв не смогут попадать в нашу базу данных. Посмотрим на валидацию почтового адреса:

Регулярное выражение: \w+@\w+\.\w+

Подробнее рассмотрим повторение символов

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

Регулярное выражение: 3+

Давайте я приведу таблицу всех квантификаторов метасимволов:

*символы повторяются 0 и до бесконечности
+повторяются от 1 и до бесконечности
повторяются точно n раз
от n и до бесконечности
от n1 и до n2 раз точно
?0 или 1 символ, не больше

В применении квантификаторов нет ничего сложного. Кроме одного нюанса: жадные и ленивые квантификаторы. Приведем таблицу:

Ленивые квантификаторы отличаются от жадных тем, что они выхватывают минимальное, а не максимальное количество символов. Представим, что есть у нас задача найти все теги заголовков h1-h6 и их контент, а весь остальной текст не должен быть затронут (я умышленно ввел несуществующий тэг h7, чтобы не мучаться с экранированием хабровских тэгов):

Текст: h7 > hello h7 > lorem ipsum avada kedavra h7 > buy /h7 >

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

Границы символьных строк

Границы символьных строк мы уже использовали выше. Приведем здесь более подробную таблицу:

\bграница слова
\Bне граница слова
\Aначало строки
\Zконец строки
\Gконец действия
Работа с подвыражениями

Текст: 255.255.255.255 просто адрес
191.198.174.192 wikipedia
87.240.190.67 vk
31.13.72.36 facebook

Здесь используется логический оператор | (или), который позволяет нам составить регулярное выражение, которое соответствует правилу, по которому составляются IP- адреса. В IP адресе должно быть от 1 и до 3 цифр, в котором число из трех чисел может начинаться с 1, с 2 (или тогда вторая цифра должна быть в пределах от 0 и до 4), или начинаться с 25, и тогда 3 цифра оказывается в пределах от 0 и до 5. Также между каждой комбинацией цифр должна стоять точка. Используя приведенные выше таблицы, постарайтесь сами расшифровать регулярное выражение сверху. Регулярные выражения в начале пугают своей длинной, но длинные не значит сложные.

Просмотр вперед

Приведем конкретную задачу: есть пароль, который должен состоят не менее чем из 7 символов и должен обязательно включать как минимум одну заглавную букву и цифру. Здесь все будет несколько сложнее, потому как пользователь должен иметь возможность поставить заглавную букву как в начале, так и в середине предложения (и тоже самое должно повторяться с буквой).

Следовательно, нам потребуется просмотр выражения вперед. Кроме того, нам нужно разбить на группы знаки. И я хочу ограничить его размеры от 8 и до 22 знаков:

Текст: Qwerty123
Im789098
weakpassword

Особенности работы регулярных выражений именно в PHP

Для изучения работы регулярных выражений в PHP, изучите функции в официальной документации PCRE (Perl Compatible Regular Expressions) которая доступна на официальном сайте. Выражение должно быть заключено в разделители, например, в прямые слеши.

Разделителем могут выступать произвольные символы, кроме буквенно-цифровых, обратного слеша ‘\’ и нулевого байта. Если символ разделителя встречается в шаблоне, его необходимо экранировать \. В качестве разделителей доступны комбинации, пришедшие из Perl: (), <>, [].

Какие функции используются в php? В пакете PCRE предоставляются следующие функции для поддержки регулярных выражений:

Замещающие строки допускается вычислять в виде кода PHP. Для активизации данного режима служит модификатор e.

Наша статья была бы неполной без классов символов POSIX, которые также работают в PHP (и в общем вполне могут повысить читабельность ваших регулярок, но не все их спешат учить, потому как часто ломают логику выражения).

[[:alnum:]]Любая буква английского алфавита или цифра
[[:alpha:]]Любая буква ([a-zA-Z])
[[:blank:]]Пробельный символ или символ с кодом 0 и 255
[[:digit:]]Любая цифра (5)
[[:lower:]]Любая строчная буква английского алфавита ([a-z])
[[:upper:]]Любая заглавная буква английского алфавита ([A-Z])
[[:punct:]]Любой знак пунктуации
[[:space:]]Любой пробельный символ
[[:xdigit:]]Любая шестнадцатеричная цифра ([0-9a-fA-F])

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

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

По традиции, несколько полезных ссылок:

Шпаргалка от MIT по регулярным выражениям
Официальная часть документации php по регулярным выражениям.

На этом все. До встречи на интенсиве!
Второй день интенсива пройдет тут

Источник

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

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