Регулярные выражения помогают искать, проверять и заменять фрагменты текста по шаблону. Они выглядят непривычно, но для большинства повседневных задач достаточно нескольких конструкций.
Примеры ниже рассчитаны на JavaScript-синтаксис. В Regex Studio шаблон вводится без символов / по краям, а флаги выбираются отдельно.
1. Найти целое число
^-?\d+$
Подойдёт для:
42
-15
0
Символы ^ и $ требуют совпадения всей строки.
2. Найти email
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b
Флаги:
gi
Это практичный шаблон для поиска адресов в тексте, но не полная реализация всех редких вариантов стандарта email.
3. Найти URL
https?:\/\/[^\s<>"']+
Флаг:
g
Шаблон ищет ссылки с http:// и https://.
4. Найти дату в формате ДД.ММ.ГГГГ
\b(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.\d{4}\b
Он проверяет диапазон дня и месяца, но не знает, сколько дней в конкретном месяце. Например, отдельная программная проверка всё равно нужна для 31 февраля.
5. Найти HEX-цвет
#(?:[A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})\b
Примеры:
#fff
#1a2b3c
#FF8800
6. Найти IPv4-адрес
\b(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)\b
Шаблон учитывает диапазон октета от 0 до 255.
7. Найти хештеги с русскими буквами
#[\p{L}\p{N}_]+
Флаги:
gu
Класс \p{L} обозначает буквы Unicode, поэтому выражение работает не только с латиницей.
8. Найти повторяющееся слово
\b([\p{L}]+)\s+\1\b
Флаги:
giu
Найдёт фрагменты вроде:
это это
слово слово
Первая группа запоминает слово, а \1 ищет его повтор.
9. Заменить несколько пробелов одним
Шаблон:
[ \t]{2,}
Строка замены — один обычный пробел.
Здесь намеренно не используется \s, чтобы случайно не удалить переносы строк.
10. Переставить имя и фамилию
Исходный текст:
Иван Петров
Шаблон:
^([\p{L}-]+)\s+([\p{L}-]+)$
Флаги:
u
Замена:
$2, $1
Результат:
Петров, Иван
Что означают основные флаги
g— найти все совпадения;i— не учитывать регистр;m— многострочный режим для^и$;s— точка захватывает перенос строки;u— корректная работа с Unicode.
Почему Regex может подвесить страницу
Некоторые неудачные шаблоны вызывают огромный перебор вариантов. Это называется катастрофическим возвратом.
Regex Studio выполняет проверку в отдельном Web Worker и останавливает слишком долгую операцию по тайм-ауту. Но в реальном приложении выражения всё равно стоит тестировать на длинных и неудобных строках.
Когда регулярное выражение лучше не использовать
Regex отлично подходит для локального поиска и простой проверки. Но не стоит пытаться одним огромным шаблоном полностью разбирать:
- HTML;
- сложный программный код;
- все варианты email;
- вложенные структуры произвольной глубины.
Для таких задач надёжнее использовать специальный парсер.
Итог
Необязательно запоминать десятки символов. Возьмите готовый шаблон, добавьте тестовый текст и посмотрите, какие части он находит.
Со временем конструкции \d, [], (), +, *, ^ и $ начинают читаться почти как обычная инструкция.
Комментарии 0
Есть мысль, дополнение или вопрос? Пиши.
Оставь первый комментарий и начни обсуждение.