Тестер регулярных выражений
Проверяем regex на своём тексте с подсветкой и группами, разбираем выражение по частям на русском языке и ловим конструкции, от которых разборщик зависает.
Что стоит знать
Совпадения и группы
Разбор выражения
Готовый код
Проверка идёт разборщиком JavaScript. В Python, PHP и Go
синтаксис почти тот же, но есть отличия — например, в JavaScript нет
флага x с комментариями внутри выражения.
Регулярное выражение читается тяжело даже автором, а через месяц — особенно. Мы раскладываем его на части и подписываем каждую человеческим языком: где начало строки, где группа с запоминанием, а где проверка того, что идёт дальше. Такой разбор есть у зарубежного regex101, но по-английски, а у русских тестеров его нет вовсе: они показывают подсветку и на этом заканчивают.
У регулярных выражений есть ловушка, которая роняет боевые серверы.
Запись вида (a+)+b на строке из тридцати одинаковых букв
заставляет разборщик перебирать разбиения по нарастающей: секунда, минута,
час. Это называется катастрофическим откатом, и через него сайты кладут
одной строкой в форме поиска.
Мы ищем такие конструкции в вашем выражении заранее и объясняем словами, что именно опасно. А само выражение выполняем в отдельном потоке с ограничением по времени: зависшее мы обрываем, и страница остаётся живой. Русские тестеры не делают ни того ни другого — на опасном выражении у них просто перестаёт отвечать вкладка.
Кириллица ведёт себя не так, как ждут
Сокращение \w в JavaScript означает латинскую букву, цифру
или подчёркивание: русские буквы под него не попадают. Рядом с кириллицей
странно срабатывает и граница слова \b. Мы замечаем такие
сочетания в вашем тексте и подсказываем, чем их заменить: явным набором
[а-яёА-ЯЁ] или свойствами знаков в режиме Unicode.
Группы, замена и готовый код
Совпадения показываются таблицей с позициями и группами захвата, именованные группы выводятся по именам. Отдельно включается режим замены — видно, каким станет текст. Проверенное выражение сразу собирается в готовый код для JavaScript, Python, PHP и Go: экранирование в этих языках разное, и переносить регулярку руками — обычный источник ошибок.
Проверка идёт в браузере
Ни выражение, ни текст никуда не отправляются: и то и другое часто содержит куски настоящих данных. Отсюда же скорость — результат пересчитывается по мере набора, без обращений к серверу.
Другие инструменты
Просмотр исходного кода страницы
Исходный HTML страницы глазами робота Яндекса или Google
Визуальный HTML-редактор
Пишете как в текстовом редакторе — получаете готовый HTML
Код цвета HTML
Код цвета в HEX, RGB, HSL и HSB, с проверкой контраста
Эффект стекла в CSS
Стекло с проверкой читаемости надписи и запасным вариантом
Конвертер CSS в SCSS и обратно
CSS в SCSS со вложенностью и обратно, со сверкой результата
Конструктор сеток CSS Grid
Сетка под три экрана с готовым HTML и проверкой порядка блоков