Тестер регулярных выражений
Проверяем regex на своём тексте с подсветкой и группами, разбираем выражение по частям на русском языке и ловим конструкции, от которых разборщик зависает.
Что стоит знать
Совпадения и группы
Разбор выражения
Готовый код
Проверка идёт разборщиком JavaScript. В Python, PHP и Go
синтаксис почти тот же, но есть отличия — например, в JavaScript нет
флага x с комментариями внутри выражения.
Регулярное выражение читается тяжело даже автором, а через месяц — особенно. Мы раскладываем его на части и подписываем каждую человеческим языком: где начало строки, где группа с запоминанием, а где проверка того, что идёт дальше. Такой разбор есть у зарубежного regex101, но по-английски, а у русских тестеров его нет вовсе: они показывают подсветку и на этом заканчивают.
У регулярных выражений есть ловушка, которая роняет боевые серверы.
Запись вида (a+)+b на строке из тридцати одинаковых букв
заставляет разборщик перебирать разбиения по нарастающей: секунда, минута,
час. Это называется катастрофическим откатом, и через него сайты кладут
одной строкой в форме поиска.
Мы ищем такие конструкции в вашем выражении заранее и объясняем словами, что именно опасно. А само выражение выполняем в отдельном потоке с ограничением по времени: зависшее мы обрываем, и страница остаётся живой. Русские тестеры не делают ни того ни другого — на опасном выражении у них просто перестаёт отвечать вкладка.
Кириллица ведёт себя не так, как ждут
Сокращение \w в JavaScript означает латинскую букву, цифру
или подчёркивание: русские буквы под него не попадают. Рядом с кириллицей
странно срабатывает и граница слова \b. Мы замечаем такие
сочетания в вашем тексте и подсказываем, чем их заменить: явным набором
[а-яёА-ЯЁ] или свойствами знаков в режиме Unicode.
Группы, замена и готовый код
Совпадения показываются таблицей с позициями и группами захвата, именованные группы выводятся по именам. Отдельно включается режим замены — видно, каким станет текст. Проверенное выражение сразу собирается в готовый код для JavaScript, Python, PHP и Go: экранирование в этих языках разное, и переносить регулярку руками — обычный источник ошибок.
Проверка идёт в браузере
Ни выражение, ни текст никуда не отправляются: и то и другое часто содержит куски настоящих данных. Отсюда же скорость — результат пересчитывается по мере набора, без обращений к серверу.
Оцените инструмент
Помогите нам стать лучше
Ваша оценка на Яндексе окажет нам поддержку!
Оставить оценку на ЯндексеРасскажите, чего не хватило.
Другие инструменты
JSON Formatter
Форматирование и починка JSON в браузере, с замечаниями о дублях и длинных числ…
JWT Decoder — разбор токена
Разбор JWT с объяснением полей и проверкой подписи
Конвертер CSV в JSON
Таблица в JSON с честными типами и обратной сверкой
Конвертер JSON в CSV
JSON в таблицу для Excel, со сверкой и защитой от формул
Форматирование SQL-запросов
Читаемый вид запроса, сверка с исходником и разбор опасных мест
XML форматирование онлайн
Читаемый XML, ошибки по-русски с подсказкой, сверка с исходником
XML-валидатор онлайн
Разметка, схема XSD и правила карты сайта, YML, RSS — с путём до ошибки
Экранирование строк
Девять режимов в обе стороны, ловит двойное экранирование