Регулярные выражения в PHP
Регулярное выражение - это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.
wikipedia.org
В народе: регэкспы, регулярки.
По-простому - это выражения для поиска и замены подстроки по шаблону.
В PHP используется название PCRE (Perl Compatible Regular Expressions -
перл совместимые регулярные выражения).
Подробнее хорошо разбирается - http://www.skillz.ru/dev/php/article-Regulyarnye_vyrazheniya_dlya_chaynikov.html
Таблица метасимволов
Метасимвол | Значение |
---|---|
\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 | Предыдущий успешный поиск. |
Таблица модификаторов
Модификатор | Описание |
---|---|
i | Шаблон становится регистронезависимым |
m | Метасимволы ‘^’ и ‘$’ указывают на начало и конец каждой строки а не всего текста. |
s | Метасимвол ‘.’ включает в свое определение перевод строки. |
u | Делает все количественные метасимволы “не жадными” . |
Таблица примитивных полезных шаблонов
Шаблон | Описание |
---|---|
[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”. |
Таблица сложных и полезных шаблонов
Шаблон | Описание |
---|---|
/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i | Проверка доменного имени. |
/A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z/ | Комплексная проверка пароля. Строка не менее шести символов, цифры, дефисы и подчеркивания, как минимум один символ верхнего регистра, один нижнего регистра и одна цифра. |
[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\ .A-Za-z0-9]{2,} | Проверка правильности email. |
/<title>(.*)</title>/ | Поиск заголовка страницы. |
^\d{1,2}([-. /])\d{1,2}\1\d{2,4}$ | Разбиваем дату на числа. |
(?:8|\+7)? ?\(?(\d{3})\)? ?(\d{3})[ -]?(\d{2})[ -]?(\d{2}) | Номер мобильного телефона. |
/.*?\./ | Получить расширение файла. |
/\.(?:exe|msi|dmg|bin|xpi|iso)$/i | Проверка расширения файла. |
/<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>(((?!/si | Внешние ссылки. |
/^[0-9]{1,55}$/ | Является ли строка числом до 55 цифр. |
/([a-zA-Zа-яА-Я]+)/ | Разбирает текст на отдельные слова. |
/^.{1,10}$/ | Любая строка, содержащая от 1 до 10 символов. |
/<b>(.*)</b>/ | Произвольная последовательность символов, заключенная между тегами. |
Пример регулярного выражения в php
Пример проверки e-mail с помощью регулярных выражений. Очень часто появляется потребность использовать вот такую проверку:
function email_check($email) { if (!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email))) { return false; } else return true; }
Ещё про регулярные выражения - http://htmlweb.ru/php/php_regexp.php
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 1 Git для начинающих. (12.04.2013)
- 0 Composer – пакетный менеджер PHP. Что и как? (22.07.2014)
- 0 Лишь этот голос. Наталья Ром – Хочу говорить крaсиво! Техники речи. Техники общения (23.07.2014)
- 0 Путешественнику на заметку: Необходимые выражения на разных языках (28.11.2014)
- 0 Synology и VPN подключение удалённого компьютера. (31.05.2014)
- 0 MySQL и PHP: Вычисление возраста (количество лет) по дате рождения (20.06.2017)
- 0 Браузер не открывает страницы, а скайп и icq работают. Что делать? (12.05.2014)
- 0 Если на флешке пропали файлы (07.02.2014)
- 0 Как изменить часовой пояс на сервере (16.11.2013)
- 0 Ошибка при выполнении команды grunt после обновления OS X 10.9: Bus error: 10. Перестал работать grunt (07.11.2013)
- 0 PHP: Как удалить файлы по маске? (07.11.2013)
- 0 Регулярные выражения в PHP (12.04.2014) ← вы тут
- 0 Как сделать потоковое видео на сайте. (24.10.2013)
- 0 Защита от спама в phpBB3 без капчи (09.10.2013)
- 0 Php функция implode внутри запроса SELECT к MySQL. (02.09.2013)
- 0 Защитить сайт или определённую папку паролем с помощью .htaccess (27.05.2013)
- 0 Удаление папок subversion (.svn) из проекта в Windows (22.03.2013)
- 0 Как убрать папку www из денвера? (22.03.2013)
- 0 Устанавливаем и настраиваем WampServer (аналог MAMP в Mac и возможная замена Denwer'у) на Windows (22.03.2013)
- 0 Гугл закрывает Google Reader (17.03.2013)
- 0 Сброс пароля для root в mysql установленном через Denwer в Windows (14.03.2013)
- 0 Полезные возможности PhpStorm и настройка горячих клавиш (14.03.2013)
- 0 Создание нового репозитория на Github, перенос локального репозитория и обновление удалённого через командную строку (30.03.2013)
- 0 Git "command not found" после обновления OS X до Mountain Lion (20.03.2013)
- 0 Использование веток (branches) в Github при разработке и доработке кода. Как делать pull request автору репозитория. (20.03.2013)