Menu
Русский

Тестер Regex

Проверяйте регулярные выражения с анимированной подсветкой.

Последнее обновление

Флаги
Тестовая строкаВставьте текст, чтобы начать
СовпаденияНет совпадений
Совпадения появятся здесь — индексы, группы захвата и счётчики, вживую.

Что такое regex tester?

Regex tester — это инструмент, в котором вы пишете регулярное выражение и сразу видите, что оно находит в тестовом тексте. Регулярки нужны разработчикам для валидации форм, извлечения данных из строк, поиска по логам, очистки текста, написания команд в редакторах и правил поиска и замены.

Поначалу regex кажется чем-то магическим: пара символов вмещает в себя огромный смысл. Но живой тестер снимает это ощущение — каждое нажатие клавиши обновляет подсветку совпадений и групп захвата, и вы спокойно экспериментируете, пока шаблон не начнёт делать ровно то, что нужно.

Разные языки используют немного разные движки регулярных выражений (JavaScript, PCRE, Python, Java, Go, .NET). Базовые вещи — символы, символьные классы, квантификаторы, якоря и группы — работают везде одинаково. Расхождения начинаются на продвинутом уровне: lookbehind, именованные группы, посессивные квантификаторы и т. п.

Что вы поймёте, пока тестируете regex

  • Шаблон описывает *форму* текста, а не его смысл. \d+ найдёт подряд идущие цифры, но не оценит, имеет ли получившееся число смысл.
  • Флаги меняют поведение: g ищет все совпадения, i игнорирует регистр, m заставляет ^ и $ срабатывать на концах строк, s разрешает . совпадать с переносами.
  • Группы захвата (...) извлекают части совпадения, а не просто проверяют строку целиком — без них не разобрать данные.

Как пользоваться regex tester по шагам

  1. Введите шаблон

    Напишите регулярное выражение в поле для шаблона. Слэши / по краям не нужны — это синтаксис литерала в JavaScript, к самому шаблону он не относится.

  2. Включите нужные флаги

    Чаще всего пригодятся g (искать все совпадения) и i (без учёта регистра). m нужен для построчных якорей, а s — чтобы . совпадал и с переносами строк.

  3. Вставьте тестовый текст

    Положите в поле текста образец данных. Совпадения подсвечиваются по мере ввода, а группы захвата выводятся под списком совпадений.

  4. Изучите панель совпадений

    Для каждого совпадения видно его позицию, полный текст и все захваченные группы. Так вы проверяете, что шаблон ловит нужное и не цепляет лишнего.

  5. Доработайте до точного результата

    Сужайте квантификаторы, добавляйте якоря (^, $), экранируйте литеральные символы (\., \?) — пока совпадения и группы не станут именно такими, какими их ждёт ваш код.

Шпаргалка по regex

Те 80% синтаксиса, которые покрывают 99% задач. Сохраните в закладки — это самый быстрый способ освежить память. Полная грамматика — в руководстве MDN по регулярным выражениям.

ТокенЗначениеПример
.Любой одиночный символ (кроме переноса строки)a.c совпадает с abc, a-c
\d \DЦифра / не цифра\d+ совпадает с 123
\w \WСимвол слова (буква/цифра/_) / не символ слова\w+ совпадает с hello_1
\s \SПробельный символ / не пробельный\s+ ловит пробелы и табы
[abc]Любой из a, b или c[aeiou] совпадает с гласной
[^abc]Ни a, ни b, ни c[^0-9] ловит всё, кроме цифр
* + ?0+, 1+, 0 или 1 раз для предыдущегоa+ совпадает с a, aaa
{n} {n,m}Ровно n раз / от n до m раз\d{3,5} — от 3 до 5 цифр
^ $Начало / конец строки (или строки текста с m)^Error — строка начинается с Error
(...)Группа захвата(\d+) захватывает цифры
(?:...)Группа без захвата(?:foo|bar) — группировка без захвата
a|bАльтернатива — a или byes|no
\bГраница слова\bcat\b ловит cat, но не cats

Примеры regex для практики

Простая проверка формы email

Шаблон
^[\w.+-]+@[\w-]+\.[\w.-]+$
Текст

learner@coddy.tech

Шаблон ловит базовую структуру что-то@что-то.что-то. Настоящая валидация email допускает гораздо больше вариантов — на формах лучше использовать type="email" плюс проверку на сервере.

Достать все числа из предложения

Шаблон
\d+
Текст

Lesson 12 has 3 tasks and 2 quizzes.

С флагом g шаблон находит каждую группу цифр: 12, 3, 2. \d+ — это regex-эквивалент фразы «одна или больше цифр подряд».

Вытащить id из URL с помощью группы захвата

Шаблон
/users/(\d+)
Текст

/users/42/profile

Полное совпадение — /users/42, а группа захвата (\d+) отдельно достаёт 42. Именно через группы захвата результат регулярки реально *используется* в коде.

Жадные и ленивые квантификаторы

Жадный
<.+>
Ленивый
<.+?>
Текст

<b>hello</b>

Жадный вариант захватывает всю строку <b>hello</b> целиком, потому что .+ берёт максимум возможного. Ленивый (+?) останавливается на первом > и совпадает отдельно с <b> и </b>.

Типичные ошибки при работе с regex

  • Забывать экранировать спецсимволы: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Если они нужны буквально — ставьте перед ними \.
  • Шаблон отлично работает на одном примере и ломается на реальных данных с лишними пробелами, переносами строк или пустыми полями.
  • Жадный .* берёт намного больше, чем нужно — переходите на .*? или используйте более конкретный символьный класс.

FAQ по regex

Что такое regex?
Regex — сокращение от *regular expression*, регулярное выражение. Это компактный язык шаблонов для поиска и сопоставления текста. Та же концепция есть практически в любом языке программирования, во многих редакторах и консольных утилитах.
Как написать regex?
Начните с тех символов, которые должны совпадать буквально, а изменчивые части замените символьными классами (\d, \w, [abc]) и квантификаторами (*, +, ?, {n,m}). Дальше открывайте regex tester и итеративно правите шаблон, пока он не начнёт ловить ровно нужные случаи.
Что означает \w в regex?
\w совпадает с символом слова — буквой, цифрой или подчёркиванием. \W — обратное (любой символ, не входящий в слово). Точный набор символов зависит от движка и от того, включён ли Unicode-флаг.
Почему мой regex захватывает слишком много?
Квантификаторы по умолчанию жадные — .* берёт максимум возможного. Используйте ленивый вариант (.*?) или более узкий символьный класс, чтобы остановиться там, где нужно.
Regex в JavaScript такой же, как везде?
Базовый синтаксис одинаковый, но движки отличаются. JavaScript, PCRE, Python re, Java, Go и .NET поддерживают разные наборы флагов и продвинутых возможностей (поддержка lookbehind, именованные группы, посессивные квантификаторы).
Стоит ли новичкам учить regex?
Да — постепенно. Начните с литералов, символьных классов, квантификаторов, якорей, флагов и групп захвата. Lookaround, именованные группы и условные конструкции оставьте на потом.

Узнать больше

Другие инструменты разработчика

Учитесь программировать с Coddy

НАЧАТЬ