Регулярные выражения (Regular Expressions) - специальный язык для обработки подстрок в тексте. С помощью него можно осуществлять поиск текста по подстрокам, проверять текст на соответствие шаблонам. Регулярные выражения поддерживаются разными языками и реализация мало чем отличается, поэтому одни и те же регулярные выражения можно исползовать, например, в JS и PHP. Основное отличие заключается лишь в методах, используемых для работы с регулярками.
Отличный онлайн-сервис для тестирования регулярных выражений - https://regex101.com/. Имеется подсветка синтаксиса и удобные подсказки.
Полезные регулярные выражения
1. Обработка email.
Любые латинские символы сколько угодно -> @ -> Любые латинские символы сколько угодно -> . -> Любые латинские символы от двух
/^[^@а-яА-Я]+@[^@а-яА-Я]+(?<!\.)\.[^\.а-яА-Я]{2,}$/m
2. Очистка строки от спецсимволов
/[^-_a-zа-яёЁ0-9@\s\.\,\:\/\\]+/ui
3. Поиск имени файла в пути без расширения
/[ \w-]+?(?=\.)/ui
4. Обработка URL
Убираем http, https, www. Оставляем домен и путь
/https?:\\/\\/(?:www\.|)(.*)/ui
Убираем http, https, www, и путь. Оставляем только домен и поддомен (если есть)
/https?:\\/\\/(?:www\.|)([\w.-]+).*/ui
Вытаскиваем ссылку из аттрибута href ссылки a
/<a.*?href=["'](.*?)["'].*?>/i
Получаем все теги <a> в тексте и разбиваем по группам.
- Полностью тег с текстом
- Текст тега
<a[^>]+>(.+?)<\\\/a>
Получает все пустые html-теги
(<a[^<>]*>\s*<\/a>)
Получает все, что между скобок (1 раз)
\((.*?)\)
Получает все слова на кириллице, разделенные точкой с запятой или точкой
([а-яА-Я]+)(;|.)
Находит двоеточия между угловыми скобками <>. Полезно для протокола SOAP, где используется XML с тегами вида <soap:Body>.
/(<\/?)(\w+):([^>]*>)/ui
Пример убирания двоеточий на PHP
$response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response);
Удаление эмодзи из строки:
/[^\p{L}\p{N}\p{Z}\p{P}]/u
\p{L}
: Unicode-класс символов, соответствующий любой букве.\p{N}
: Unicode-класс символов, соответствующий любой цифре.\p{Z}
: Unicode-класс символов, соответствующий любому разделителю (пробел, табуляция и т.д.).\p{P}
: Unicode-класс символов, соответствующий любому знаку пунктуации.