Шпаргалка по регулярным выражениям
Последнее обновление
Классы символов
Совпадение с одним символом из набора.
| Токен | Что находит |
|---|---|
. | Любой символ, кроме перевода строки |
\d | Любую цифру (0-9) |
\D | Любой нецифровой символ |
\w | Словесный символ (буква, цифра, подчёркивание) |
\W | Любой несловесный символ |
\s | Любой пробельный символ (пробел, табуляция, перевод строки) |
[abc] | Любой из a, b или c |
[a-z] | Любую строчную букву из диапазона |
[^abc] | Любой символ, кроме a, b или c |
Квантификаторы
Указывают, сколько раз повторяется предыдущий токен.
| Токен | Что находит |
|---|---|
* | Ноль или более |
+ | Один или более |
? | Ноль или один (необязательно) |
{3} | Ровно 3 раза |
{2,4} | От 2 до 4 раз |
{2,} | 2 или более раз |
*? | Ленивый: как можно меньше |
+? | Ленивый: один или более, минимально |
Якоря и границы
Совпадение с позициями, а не с символами.
| Токен | Что находит |
|---|---|
^ | Начало строки (или строки текста) |
$ | Конец строки (или строки текста) |
\b | Границу слова |
\B | Позицию, не являющуюся границей слова |
^abc$ | Строку, равную в точности abc |
\bword\b | word как отдельное слово |
Группы и захват
Группировка токенов и захват того, что они находят.
| Токен | Что находит |
|---|---|
(abc) | Захватывающую группу, сохраняемую как группа 1 |
(?:abc) | Незахватывающую группу |
(?<year>\d{4}) | Именованную захватывающую группу year |
(ab)+ | Повтор всей группы |
\1 | Обратную ссылку на группу 1 |
\k<year> | Обратную ссылку на именованную группу |
Чередование
Совпадение с одним шаблоном или другим.
| Токен | Что находит |
|---|---|
a|b | Либо a, либо b |
cat|dog | Слово cat или dog |
(jpg|png|gif) | Любую из альтернатив, с захватом |
gr(a|e)y | gray или grey |
^(yes|no)$ | В точности yes или в точности no |
Опережающие и ретроспективные проверки
Утверждают, что идёт до или после, не потребляя это.
| Токен | Что находит |
|---|---|
(?=abc) | Опережающая проверка: за ним следует abc |
(?!abc) | Негативная опережающая: за ним не следует abc |
(?<=abc) | Ретроспективная проверка: ему предшествует abc |
(?<!abc) | Негативная ретроспективная: ему не предшествует abc |
\d+(?= dollars) | Цифры, только если за ними следует dollars |
(?<=\$)\d+ | Цифры, только если им предшествует $ |
Флаги
Изменяют то, как применяется весь шаблон.
| Флаг | Что делает |
|---|---|
g | Глобальный: находит все совпадения, а не только первое |
i | Поиск без учёта регистра |
m | Многострочный: ^ и $ совпадают с концами строк |
s | Dotall: . совпадает и с переводами строк |
u | Режим Unicode |
x | Расширенный: игнорировать пробелы в шаблоне |
Частые шаблоны
Готовые к адаптации шаблоны для повседневной валидации.
| Шаблон | Что находит |
|---|---|
^\d+$ | Целое число (только цифры) |
^[\w.+-]+@[\w-]+\.[\w.-]+$ | Базовый адрес email |
https?:\/\/[^\s]+ | URL с http или https |
^\d{4}-\d{2}-\d{2}$ | Дату вида 2026-05-27 |
^\d{3}-\d{3}-\d{4}$ | Телефонный номер США |
^#?[0-9a-fA-F]{6}$ | 6-значный hex-цвет |
\s+ | Один или более пробельных символов |
Каждый токен regex, который вам нужен, на одной странице. Эта шпаргалка по регулярным выражениям - быстрый справочник для построения regex: классы символов, квантификаторы, якоря, группы, чередование, опережающие/ретроспективные проверки и флаги.
Здесь используется распространённый диалект PCRE / JavaScript, на который опирается большинство языков. Скопируйте шаблон или попробуйте его вживую в инструменте-тестере regex, чтобы увидеть, что именно он находит, - а playground для JS всего в одном клике.
Часто задаваемые вопросы по шпаргалке regex
Эта шпаргалка по regex бесплатна?
В чём разница между жадными и ленивыми квантификаторами?
* и + совпадают с как можно большим количеством символов, а затем возвращают часть, если остальной части шаблона нужны символы. Ленивые квантификаторы, записываемые добавлением ? (например *? или +?), совпадают с как можно меньшим и расширяются только по необходимости. Например, на <a><b> шаблон <.+> жадно совпадает со всей строкой, а <.+?> - только с <a>.Что такое захватывающая группа в regex?
(\d{4}), чей найденный текст сохраняется и нумеруется, чтобы его можно было переиспользовать или извлечь. Позже вы ссылаетесь на неё обратной ссылкой вроде \1 или именуете её через (?<year>\d{4}) для ясности. Если нужно сгруппировать токены без захвата, используйте незахватывающую группу (?:...).