Регулярные выражения, тот самый камень преткновения, с которым рано или поздно сталкивается каждый разработчик. Несмотря на обилие обучающей и справочной информации по данному вопросу, множеству доступных онлайн-конструкторов, разобраться сходу во всех этих слешах, скобках довольно непросто. Но регулярные выражения являются одним из основных инструментов, поэтому для успешной и продуктивной разработки разобраться с ними все же придётся.
Синтаксис PCRE регулярных выражений
Язык PCRE (Perl Compatible Regular Expression) является наиболее распространенным для регулярных выражений. Согласно правилам PCRE, регулярное выражение представляет собой обычную строку символов, расположенную между символами-ограничителями. Обычно в качестве символа-ограничителя выступает слеш /. Таким образом общий вид для всех регулярных выражений PCRE следующий:
1 |
/ регулярное выражение / модификаторы |
Также в языке PCRE возможно использование альтернативных ограничителей: любых одинаковых символов или парных скобок, например:
1 2 3 4 5 |
" регулярное выражение " модификаторы # регулярное выражение # модификаторы { регулярное выражение } модификаторы ( регулярное выражение ) модификаторы [ регулярное выражение ] модификаторы |
При использовании в качестве ограничителей скобок, скобки использующиеся внутри выражения экранировать не надо.
Основы регулярных выражений
Выражение | Описание выражения | Пример использования | Пояснение к примеру |
---|---|---|---|
\S | любой пробельный символ, к этой категории относятся: пробел ” ” , знак табуляции \t, перенос строк \n, возврат каретки \r | text.replace(/\S/g,"_") | Замена на _ всех пробельных символов |
\s | Все символы кроме пробельных | text.match(/\s/g) | Удаление всех пробельных символов (в отличие от варианта выше, ищет все символы, кроме пробельных |
\W | Все символы, кроме словесных: латинских букв, цифр, знака подчеркивания | text.match(/\W/g) | Найдет все кроме цифр, букв латинского алфавита, знака подчеркивания |
\w | Любой словесный символ (латинские буквы, цифры и знак подчеркивания) | text.match(/\w/g) | Найдет все цифры, буквы латинского алфавита и знак подчеркивания |
\D | Любой нецифровой символ | text.match(/\D/g) | Найдет все, кроме цифр |
\d | Только цифровой символ | text.match(/\d/g) | Найдет все цифры |
a | Указанный символ или последовательность символов | text.match(/A/g) | Найдет все заглавные A |
[abc] | Любой из перечисленных в квадратных скобках | text.match(/[Aa]/g) | Найдет все символы A, как заглавные так и строчные |
[^abc] | Все кроме перечисленных в квадратных скобках | text.match(/[^Aa]/g) | Исключит буквы А, как заглавные, так и прописные |
Шаблоны регулярных выражений
Шаблон | Описание |
---|---|
(\S+)@([a-z0-9.]+) | Поиск адреса электронной почты |
((\+?7|8)[ \-] ?)?((\(\d{3}\))|(\d{3}))?([ \-])?(\d{3}[\- ]?\d{2}[\- ]?\d{2}) | Поиск номера телефона |
^\s+|\n|\r|\s+$ | Поиск пробелов в начале и конце строки, а также переносов строк |
<a href="[^>]+">.+?<\/a> | Поиск ссылки в коде |
Проверка регулярных выражений
Здесь вы можете поупражняться в оттачивании навыков составления регулярных выражений.
See the Pen
WOV RegExp templates by Paul (@1110000)
on CodePen.