# Регулярные выражения: ИИ-нейросеть для regex с проверкой онлайн

> Источник: https://aliviy.io/regex/
> Обновлено: 2026-10-03
> Сервис: Аливия (aliviy.io) — онлайн ИИ-чат на русском языке.

## Что такое регулярное выражение и как здесь работает проверка

Регулярное выражение — это шаблон, по которому программа ищет, проверяет или заменяет текст: номера телефонов, даты, адреса страниц, коды заказов. На этой странице вы описываете словами, что нужно найти, и даёте 3–5 строк-примеров: какие должны совпасть, а какие нет. Нейросеть Аливия пишет выражение под выбранный язык и разбирает его по частям.

Главное отличие — проверка прямо на странице. Помощник в браузере сразу прогоняет выражение по вашим примерам и подсвечивает совпадения. Если хотя бы один пример не прошёл, ошибка одной кнопкой уходит обратно модели вместе со строкой, на которой выражение сломалось. Так вы получаете не просто «похоже на правду», а шаблон, проверенный на ваших данных.

## Как получить проверенную регулярку за пять шагов

1. Опишите задачу одной фразой: «найти российские номера мобильных в любом формате» или «вытащить ID товара из URL».
2. Выберите язык или движок: JavaScript, Python, PHP (PCRE) или Яндекс Метрика.
3. Добавьте строки, которые должны совпасть, и строки, которые совпадать не должны. Вторые важнее: именно они ловят слишком широкие шаблоны.
4. Получите выражение с разбором каждой части и посмотрите подсветку совпадений в браузере.
5. Если пример не прошёл, отправьте ошибку модели и получите исправленный вариант.

> Готовая формулировка запроса: «Python. Найти в тексте номера телефонов РФ. Должны совпасть: +7 912 345-67-89, 8(912)3456789, 89123456789. Не должны: 12345, +1 202 555 0143, 8-800-555-35-35-1. Нужна группа с 10 цифрами без кода страны».

## Чем отличаются диалекты: JS, Python re, PCRE и RE2

Одна и та же регулярка не всегда переносится между языками. Синтаксис групп, просмотр назад и даже смысл `\d` различаются. Поэтому инструмент спрашивает язык заранее и пишет выражение под конкретный движок.

| Возможность | JavaScript | Python re | PCRE (PHP) | RE2 (Метрика) |
| --- | --- | --- | --- | --- |
| Именованная группа | (?<name>…) | (?P<name>…) | (?<name>…), (?’name’…) и (?P<name>…) | (?P<name>…) |
| Просмотр назад (?<=…) | Внутри любой шаблон | Только фиксированной длины | Нужна известная максимальная длина, по умолчанию до 255 символов на ветку | Не поддерживается |
| \d | Только [0-9] | Любые цифры Юникода, [0-9] — с флагом re.ASCII | [0-9], пока не включён PCRE2_UCP | [0-9] |
| Атомарные группы и сверхжадные квантификаторы | Нет | Есть с Python 3.11 | Есть | Нет |
| Обратные ссылки \1 | Есть | Есть | Есть | Нет |

Самая частая ловушка при переносе — именованные группы. Выражение `(?<year>\d{4})` из JavaScript Python не примет: ему нужен синтаксис `(?P<year>\d{4})`. PCRE понимает оба варианта, поэтому регулярки из PHP часто «работают везде, кроме Python». Вторая ловушка — просмотр назад: в Python шаблон внутри `(?<=…)` должен совпадать со строкой фиксированной длины, а `a*` или `a{3,4}` там запрещены.

### Где задаются флаги в разных языках

Флаги меняют поведение всего шаблона: регистр, многострочный режим, точку, которая захватывает перевод строки. В JavaScript они пишутся после закрывающей косой черты, например `/^\d+$/gm`, или вторым аргументом конструктора `RegExp`. В Python флаги передают константами: `re.IGNORECASE`, `re.MULTILINE`, `re.DOTALL`, `re.VERBOSE`, их объединяют через `|`. В PHP модификаторы ставят после разделителя шаблона: `/шаблон/iu`.

Для кириллицы флаг Юникода особенно важен. В PHP без модификатора `u` шаблон работает с байтами, и русская буква в UTF-8 превращается в два символа, поэтому квантификаторы и классы ведут себя неожиданно. Нейросеть всегда указывает нужные флаги рядом с выражением, а в разборе объясняет, зачем каждый из них.

## Регулярка для email: почему идеальной нет

Запрос «регулярка для email» — один из самых частых, и на него нет единственного правильного ответа. Полная грамматика адресов из RFC 5322 допускает комментарии, кавычки и пробелы, которых в реальных формах никто не вводит. Даже стандарт HTML намеренно отступает от RFC 5322 и описывает собственное, более практичное правило для поля `type="email"`.

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

```
^[^\s@]+@[^\s@]+\.[^\s@]+$
```

Этот шаблон для поля формы читается так: один или больше символов, кроме пробела и @, затем @, затем домен, точка и зона. Он пропустит редкие корректные адреса с кириллическим доменом и отсеет явные опечатки вроде пропущенной точки. Большего от регулярки для email ждать не стоит, а строгие шаблоны на сотни символов чаще мешают, чем помогают.

## Регулярные выражения в Яндекс Метрике

SEO-специалисты и маркетологи пишут регулярки для целей и сегментов в Метрике, и там свои правила. Метрика обрабатывает выражения по синтаксису RE2 и применяет их к полному URL страницы, включая протокол и домен. Ещё одна особенность: выражение проверяется дважды — для URL с www и без него.

Из-за RE2 в Метрике не работают просмотр вперёд и назад и обратные ссылки. Если вы привыкли исключать страницы конструкцией `^(?!.*utm)`, в цели это не сработает — условие придётся разбить на «содержит» и «не содержит» в настройках. Выберите «Яндекс Метрика» в конструкторе, и нейросеть не станет использовать то, чего RE2 не умеет.

```
^https?://(www\.)?example\.ru/catalog/[^/]+/\d+/?$
```

Это выражение отберёт карточки товаров вида `/catalog/chairs/123/` и не захватит страницы разделов. Точка в домене экранирована: без обратной косой черты она означает «любой символ».

## Типичные ошибки в регулярных выражениях

- **Забытые якоря.**  Без `^` и `$` шаблон `\d{6}` найдёт «индекс» внутри номера карты.
- **Неэкранированная точка.**  `site.ru` совпадёт и с «siteXru».
- **Жадные квантификаторы.**  `<.*>` в HTML захватит всё от первого тега до последнего; нужна ленивая версия `<.*?>` или класс `[^>]*`.
- **Разбор HTML и JSON регуляркой.**  Для них есть парсеры; регулярка подходит для разовой выборки, но не для надёжной обработки.

> Вложенные квантификаторы вроде `(a+)+` или `(\w+\s?)*$` на неудачной строке заставляют движок с возвратами перебирать огромное число вариантов. Это называют катастрофическим возвратом, а при атаке через пользовательский ввод — ReDoS. Если регулярка проверяет данные из формы или API, попросите нейросеть проверить её на этот риск и не принимайте шаблоны с вложенными повторами без необходимости.

## Как проверить регулярку самостоятельно

Проверка в браузере на этой странице использует движок JavaScript. Для Python и PHP результат почти всегда совпадает, но не всегда: например, `\d` в Python по умолчанию шире. Поэтому финальную проверку стоит сделать в целевом языке.

1. Соберите набор строк: 5–10 правильных, столько же почти правильных, пустую строку и очень длинную.
2. В Python прогоните их через `re.fullmatch`, если строка должна совпасть целиком, или через `re.findall` для поиска.
3. В PHP используйте `preg_match` и не забудьте флаг `u` для кириллицы.
4. Для Метрики проверьте цель на реальных визитах в отчёте, прежде чем строить по ней рекламу.

## Где регулярки пригодятся вместе с другими инструментами

Регулярка обычно — часть кода. Если нужна функция целиком, с чтением файла и сохранением результата, удобнее [написать скрипт на Python](https://aliviy.io/python/) или [сгенерировать код на JavaScript](https://aliviy.io/javascript/). Для проверки данных на стороне сайта подойдёт [генератор PHP-кода](https://aliviy.io/php/), а шаблоны, которые разбирают пользовательский ввод, полезно прогнать через [поиск уязвимостей в коде](https://aliviy.io/code-security/).

Аливия работает без регистрации, круглосуточно и без VPN из России. Можно прислать файл TXT или CSV с примерами строк — так быстрее, чем вставлять их по одной. На бесплатном доступе действует дневной лимит запросов, на платных тарифах он больше.

## Регулярные выражения: частые вопросы

Что такое регулярное выражение простыми словами?
Это шаблон для поиска текста: например, «три цифры, дефис, две цифры». Программа сравнивает с ним строки и находит подходящие. Регулярки используют для проверки форм, поиска в логах, замены текста и настройки целей в аналитике.
Как написать регулярное выражение для email?
Для проверки формы подойдёт простой шаблон вида
^[^\s@]+@[^\s@]+\.[^\s@]+$
: что-то до @, домен с точкой, без пробелов. Идеальной регулярки под все адреса нет, а настоящая проверка — письмо с подтверждением. Для поиска в тексте нужен шаблон с границами слова.
Чем регулярки в Python отличаются от JavaScript?
Именованные группы в Python пишутся как
(?P<name>…)
, в JavaScript —
(?<name>…)
. В Python просмотр назад допускает только шаблоны фиксированной длины, а
\d
по умолчанию включает цифры Юникода. Укажите язык — нейросеть учтёт различия.
Какой синтаксис регулярных выражений в Яндекс Метрике?
Метрика использует RE2 и применяет выражение к полному URL с протоколом и доменом. В RE2 нет просмотра вперёд и назад и обратных ссылок. Выберите в конструкторе «Яндекс Метрика», чтобы получить совместимое выражение.
Как проверить регулярное выражение онлайн?
На этой странице проверка встроена: помощник прогоняет выражение по вашим примерам в браузере и подсвечивает совпадения. Проверка идёт движком JavaScript, поэтому для Python и PHP финальный прогон лучше сделать в целевом языке.
Что означает .* в регулярном выражении?
Точка — любой символ, кроме перевода строки, звёздочка — «ноль или больше раз». Вместе это «любая строка», причём жадно: захватывается максимум текста. Ленивая версия
.*?
берёт минимум.
Почему регулярка находит больше, чем нужно?
Обычно не хватает якорей
^
и
$
, границ слова
\b
или точка не экранирована. Добавьте в запрос строки, которые не должны совпадать, — нейросеть сузит шаблон и проверит его на них.
Можно ли регулярным выражением разобрать HTML?
Для разовой выборки — да, например, достать все ссылки из страницы. Для надёжной обработки HTML нужен парсер: вложенные теги и атрибуты в разном порядке ломают регулярки. Нейросеть подскажет подходящую библиотеку для вашего языка.
Что такое ReDoS?
Это атака, при которой специально подобранная строка заставляет регулярку с вложенными повторами работать очень долго. Опасны шаблоны вроде
(a+)+
на пользовательском вводе. Попросите нейросеть проверить выражение на этот риск.
Можно ли прислать файл со строками для проверки?
Да, чат принимает TXT и CSV. Удобно разделить файл на две части: строки, которые должны совпасть, и строки, которые не должны. Так нейросеть сразу увидит, где шаблон ошибается.

## Итог

Генератор регулярных выражений пишет шаблон под нужный движок — JavaScript, Python, PCRE или RE2 в Метрике — и сразу проверяет его на ваших примерах. Давайте строки, которые не должны совпадать: они ловят большинство ошибок. Финальный прогон делайте в целевом языке.
