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

Примеры ниже рассчитаны на 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, [], (), +, *, ^ и $ начинают читаться почти как обычная инструкция.