Конструктор и проверка регулярных выражений онлайн
Соберите рабочее регулярное выражение для цели в Яндекс Метрике в пару кликов, без знания синтаксиса RE2. Есть готовые шаблоны под частые задачи с проверкой на ваших реальных адресах.
Тип цели
Что нужно поймать
Готовое выражение
—
Проверка на реальных адресах
Вставьте свои страницы или значения — по одному на строку — и увидите, какие цель засчитает.
Как это вообще устроено
Метрика проверяет регулярки не обычным движком, к которому все привыкли по PHP, Python или JavaScript-тестерам. Она использует RE2, библиотеку Google, специально урезанную ради безопасности и скорости. Из-за этой урезанности часть привычных конструкций там просто не работает. Самое неприятное: Метрика никак об этом не предупреждает. Регулярка молча не срабатывает, цель молча не засчитывается, и без понимания, что именно RE2 не умеет, найти причину почти нереально.
Есть ещё один нюанс. То, по какому тексту вообще идёт проверка, меняется в зависимости от типа цели. Для одних это весь адрес страницы целиком с доменом, для других, только значение идентификатора события, без всякого домена. Спутать одно с другим — вторая по частоте причина, почему регулярка «не работает», хотя написана без единой ошибки.
По какому тексту проверяется регулярка
| Тип цели | По чему проверяется регулярка | Пример |
|---|---|---|
| Посещение страниц | Полный адрес страницы, вместе с https:// и доменом | ^https://site\.ru/basket/ |
| Составная цель (шаг «Посещение страниц») | То же самое — полный URL, в рамках одного шага воронки | — |
| Клик по кнопке / Отправка формы / Скачивание файла (условие «URL страницы») | Полный URL страницы, на которой произошло действие | — |
| JavaScript-событие | Только значение идентификатора события — без домена и протокола | button|buy |
| Клик по номеру телефона, email, переход в мессенджер (метка) | Только значение самой метки | — |
Что из RE2 доступно, а что нет
| Хотите | Работает | Комментарий |
|---|---|---|
слово1|слово2 — любое из перечисленного | Да | Основной рабочий инструмент почти для всех задач |
[a-z], \d, \w, юникод-классы \p{...} | Да | |
*, +, ?, {2,5} | Да | |
Регистронезависимый поиск (?i)текст | Да | |
Группы (...) и (?:...) | Да | |
Просмотр вперёд/назад (?=...), (?<=...) | Нет | Самая частая причина «регулярка не работает». Обычно решается перечислением вариантов через | |
Обратные ссылки \1, \k<name> | Нет | Для URL-паттернов почти никогда и не нужны на практике |
Possessive-квантификаторы x++ | Нет | Просто используйте обычный x+ — в RE2 и так нет риска зависания |
Частые вопросы
Это официальный инструмент Яндекса?
Нет, это независимый инструмент Polidam. Но вся логика построена строго на официальной документации — справке Яндекс Метрики по регулярным выражениям и официальном описании синтаксиса RE2 от Google, на котором построен движок Метрики.
Почему регулярка, которая отлично работает в обычном тестере, не срабатывает в Метрике?
Скорее всего, в ней используется просмотр вперёд/назад или обратная ссылка — конструкции, которых в RE2 просто нет физически. Метрика не выдаёт ошибку в таком случае, цель просто не засчитывается, и это самая частая причина молчаливого «не работает».
Нужно ли экранировать %20 и другие URL-коды в адресе?
Нет. Метрика проверяет регулярку по уже раскодированному адресу — там, где в браузере вы видите пробел, кириллицу или другие спецсимволы, а не проценты и коды.
Регулярка чувствительна к регистру?
Да, по умолчанию Catalog и catalog — разные строки. Если нужно игнорировать регистр, в начало выражения добавляется (?i).
Как проверить, что цель реально заработала, после того как я вставил выражение в Метрику?
Через отчёт в реальном времени или режим отладки Метрики — зайдите на страницу, которая должна засчитываться, и посмотрите, появилось ли достижение цели. Тестер на этой странице проверяет только саму логику регулярки, а не то, действительно ли счётчик Метрики установлен и работает на сайте.
А что если мне нужно «все страницы, кроме вот этой»?
Честно: чистого способа сделать «исключить» одной регуляркой в RE2 нет — как раз потому что для этого обычно нужен просмотр вперёд, которого тут нет. Для такой задачи в Метрике правильнее использовать составную цель с отдельным исключающим условием, а не пытаться впихнуть исключение в одно выражение.
