Шпаргалка по regex: паттерны, необходимые каждому разработчику
Регулярные выражения кажутся чёрной магией, пока вы не выучите основные паттерны. Как только это произойдёт, они станут незаменимым инструментом для поиска текста, валидации, извлечения данных и манипуляций со строками.
Возьмите паттерн, вставьте его в наш Тестер regex, чтобы поэкспериментировать, и адаптируйте под свои нужды.
Базовый синтаксис regex
Символьные классы
| Паттерн | Что совпадает | Пример |
|---|---|---|
. | Любой символ, кроме новой строки | a.c совпадает с "abc", "a1c" |
\d | Любая цифра (0-9) | \d{3} совпадает с "123" |
\w | Символ слова (буква, цифра, подчёркивание) | \w+ совпадает с "hello_1" |
\s | Пробельный символ | \s+ совпадает с пробелами |
[abc] | Любой из символов a, b или c | [aeiou] совпадает с гласными |
[^abc] | Любой символ, кроме a, b, c | [^0-9] совпадает с не-цифрами |
[a-z] | Любой символ в диапазоне | [A-Za-z] совпадает с буквами |
Квантификаторы
| Паттерн | Значение |
|---|---|
* | Ноль или более |
+ | Один или более |
? | Ноль или один |
{n} | Ровно n раз |
{n,m} | От n до m раз |
Якоря и группы
| Паттерн | Значение |
|---|---|
^ | Начало строки |
$ | Конец строки |
\b | Граница слова |
(abc) | Захватывающая группа |
(?:abc) | Незахватывающая группа |
a|b | Альтернатива (или) |
(?=abc) | Позитивный просмотр вперёд |
Практические паттерны
Валидация email
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Сопоставление URL
https?:\/\/[\w.-]+(?:\.[a-zA-Z]{2,})(?:\/[\w./?%&=-]*)?
Надёжность пароля
Минимум 8 символов, одна заглавная буква, одна строчная, одна цифра, один спецсимвол:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$
Для генерации надёжных паролей используйте наш Генератор паролей.
Шестнадцатеричные цветовые коды
^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$
Конвертируйте между форматами цвета с помощью нашего Конвертера цветов.
Валидация UUID
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Генерируйте валидные UUID с помощью нашего Генератора UUID.
Советы по производительности regex
- Будьте конкретны —
[a-zA-Z]быстрее, чем. - Избегайте катастрофического возврата — Вложенные квантификаторы вроде
(a+)+вызывают экспоненциальное время выполнения - Используйте незахватывающие группы, когда значение не нужно
- Привязывайте паттерны —
^pattern$быстрее непривязанного поиска - Тестируйте с граничными случаями — Используйте наш Тестер regex перед развёртыванием
Часто задаваемые вопросы
В чём разница между * и +?
* совпадает с нулём или более вхождений, + требует хотя бы одно. Поэтому ab*c совпадает с "ac", а ab+c — нет.
Как сделать regex нечувствительным к регистру?
Используйте флаг i: /pattern/i в JavaScript, re.IGNORECASE в Python.
Связанные ресурсы
- Regex для валидации email — паттерны, которые работают в продакшене
- Тестер regex — тестируйте и отлаживайте паттерны в реальном времени
- Генератор паролей — генерируйте пароли, соответствующие regex-правилам
- Генератор UUID — генерируйте валидные UUID