Шпаргалка по регулярным выражениям
Что такое регулярные выражения?
Регулярные выражения (регексы, regex) — это мощный инструмент для поиска, проверки и извлечения текста по шаблону. Используются в программировании, редакторах (Notepad++, VS Code), CMD, PowerShell, Python, JavaScript и др.
Базовые метасимволы
.— любой символ, кроме новой строки.^— начало строки.$— конец строки.\d— цифра (0–9).\w— буква, цифра или подчёркивание (a–z, A–Z, 0–9, _).\s— пробел, табуляция, перевод строки.\b— граница слова (между \w и \W).[abc]— один из символов в скобках.[^abc]— любой символ, кроме указанных.[a-z]— диапазон символов (например, все строчные буквы).
Квантификаторы
*— 0 или более повторений.+— 1 или более повторений.?— 0 или 1 повторение (необязательный элемент).{n}— ровно n раз.{n,}— n или более раз.{n,m}— от n до m раз.
Группировка и логика
(...)— группировка (захватывает часть для извлечения).(?:...)— не захватывающая группа (только для логики).X|Y— либо X, либо Y.\1, \2— обратная ссылка на первую, вторую группу.
Экранирование спецсимволов
Если нужно найти символ как есть — экранируйте его:
\.— точка как символ (не любой символ).\+— знак плюс.\(,\)— скобки.\\— обратный слеш.
Примеры полезных шаблонов
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Простая проверка email: user@example.com
📞 Номер телефона (международный)
^\+?[1-9]\d{1,14}$
Например: +79991234567
🌐 URL (упрощённо)
https?://[^\s/$.?#].[^\s]*
Находит http:// и https:// ссылки.
📅 Дата в формате ГГГГ-ММ-ДД
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Проверяет корректность формата даты.
💳 Номер карты (просто 16 цифр)
^\d{4}[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}$
Подходит для 1234-5678-9012-3456 или без разделителей.
Флаги (модификаторы)
i— игнорировать регистр.g— глобальный поиск (все совпадения).m— многострочный режим (^ и $ работают по строкам).s— точка включает символ новой строки.
Примеры использования
JavaScript
const re = /\d+/g;
const str = "Цена: 100, Скидка: 25";
const matches = str.match(re); // ['100', '25']
Python
import re
text = "Email: user@example.com"
match = re.search(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
if match:
print("Найден email:", match.group())
PowerShell
$text = "Телефон: +79991234567"
if ($text -match '\+\d{11}') {
Write-Host "Найден номер: $($matches[0])"
}
Полезные советы
- Тестируйте регулярки на regex101.com — там есть пояснения и подсветка.
- Не пытайтесь написать идеальный парсер email — используйте библиотеки.
- Избегайте чрезмерной сложности — регексы должны быть читаемыми.
- Используйте
?:в группах, если не нужна их подстановка.
Совет: Сохраните эту страницу в закладки — пригодится при работе с логами, формами, парсингом и автоматизацией.