Совпадения
Результат
Шаблон находит ссылки http и https с поддоменами, необязательным портом из 2–5 цифр, путём, query string и #фрагментом, например https://example.com:8443/cart?id=42#top. localhost:3000 он пропускает, потому что нет схемы, а на вкладке замены каждую ссылку можно превратить в Markdown.
Как пользоваться
- Введите шаблон между косыми чертами или вставьте целиком литерал /шаблон/флаги. Нажмите на частый шаблон, например Email или IPv4, чтобы начать с проверенного.
- Включайте флаги: g находит все совпадения, i не учитывает регистр, m применяет ^ и $ к каждой строке, s позволяет точке совпадать с переносом строки.
- Введите или вставьте тестовый текст. Совпадения подсвечиваются при наборе и перечисляются ниже с позициями и группами.
- Перейдите в «Замена» и укажите замену с $1, $<имя> или $& — результат появится по мере ввода. Любое совпадение, группу или результат можно скопировать касанием.
- Используется движок регулярных выражений JavaScript (ECMAScript) вашего браузера — тот же, что в Node.js, Chrome и Deno. Поддерживаются ретроспективная проверка, именованные группы и классы Unicode \p{…}.
- Поиск выполняется в фоне и прерывается через 1 секунду, поэтому шаблон с катастрофическим возвратом покажет ошибку, а не подвесит страницу.
- В строке замены \n и \t вставляют перенос строки и табуляцию. $$ вставляет знак доллара.
- Включите флаг d, чтобы видеть начало и конец каждой группы.
- Ссылки для отправки содержат только шаблон и флаги, но не ваш текст.
Флаги, меняющие результат
g ищет все совпадения, а не только первое, i игнорирует регистр, m заставляет ^ и $ срабатывать на каждой строке, s разрешает точке совпадать с переводом строки, u включает полный Unicode и классы \p{…}, y ищет только с позиции lastIndex, d возвращает начало и конец каждой группы. Забытый флаг g — самая частая причина, по которой шаблон будто бы находит лишь одно совпадение.
Как читать шаблон
\d — цифра, \w — латинская буква, цифра или подчёркивание, \s — пробельный символ, \b — граница слова. Квантификаторы повторяют предыдущий элемент: * — 0 и более раз, + — 1 и более, ? — 0 или 1, {2,4} — от 2 до 4. Знак ? после квантификатора делает его ленивым, и <.+?> останавливается на первой >. Скобки создают группу; (?<year>\d{4}) даёт ей имя, а (?:…) группирует без захвата. Учтите: \w не находит кириллицу — для неё нужен класс [а-яё] или \p{L} с флагом u.
Опережающие проверки (?=…) и (?!…) и ретроспективные (?<=…) и (?<!…) смотрят, что идёт после или до, не захватывая это. Например, \d+(?= USD) находит 120 в 120 USD, но не в 120 EUR.
Как избежать медленных шаблонов
Вложенные квантификаторы вроде (a+)+ или (.*)* на почти подходящем тексте дают экспоненциальный перебор и могут положить сервер — это называется ReDoS. Здесь поиск идёт в фоновом потоке с лимитом в одну секунду, поэтому вместо зависания вы увидите ошибку. Используйте конкретные классы вроде [^,]* вместо .* и якоря ^ и $ при проверке значения целиком.
Частые вопросы
Какой диалект регулярных выражений здесь используется?
JavaScript (ECMAScript) — движок, встроенный в браузер; он совпадает с Node.js, Deno и TypeScript. Большая часть синтаксиса общая с PCRE, Python и Java, но, например, сверхжадные квантификаторы и атомарные группы ведут себя иначе.
Почему регулярка находит только одно совпадение?
Выключен флаг g (global). Без него JavaScript останавливается на первом совпадении. Включите g, чтобы подсветить и вывести все.
Как использовать группы при замене?
Пишите $1, $2 и так далее для нумерованных групп, $<name> для именованных и $& для всего совпадения. $$ вставляет сам знак доллара.
Как найти точку или скобку буквально?
Экранируйте символ обратной косой чертой: \. найдёт точку, \( — круглую скобку, \[ — квадратную. Внутри символьного класса большинство символов буквальны, поэтому [.] тоже найдёт точку.
Можно ли идеально проверить e-mail регулярным выражением?
Нет. Полные правила RFC 5321 и 5322 слишком широки и сложны для практичного шаблона. Простой регуляркой ловите опечатки, а адрес подтверждайте письмом.
Отправляется ли куда-то мой тестовый текст?
Нет. Поиск выполняется в браузере. Ссылки для обмена содержат только шаблон и флаги, но не текст.