Редактор
Очікування введення або виконання регулярного виразу…
Дії
Чому варто використовувати цей тестер регулярних виразів
- Синхронне відповідність з опціональним "живим" режимом для повторного запуску під час введення
- Структурований список відповідностей з початковим індексом, кінцевим індексом, значенням та іменованими групами захоплення
- Повна підтримка синтаксису RegExp JavaScript/ECMAScript (той самий рушій, що й у вашому середовищі JS)
- Управління прапорцями: g, i, m, s, u, y – комбінуйте та експериментуйте безпечно
- Базова оцінка продуктивності з часом виконання кожного запуску в мілісекундах
- Текстовий зведений вивід для швидкого копіювання/вставлення в завдання, документацію або коміти
- Відмінно підходить для навчання: прототипуйте шаблони без запуску повного проекту чи тестового набору
- Ідеально для щоденних завдань: парсинг логів, валідація, витягування URL/ID, швидке очищення даних
- Список результатів має м'яке обмеження для запобігання заморожуванню інтерфейсу при обробці великих текстів
🔧 Як використовувати тестер регулярних виразів for regex-tester
1. Вставте або введіть тестовий текст
Додайте текст, через який хочете шукати: логи, фрагменти, частини CSV, HTML, JSON – будь-який простий текст.
2. Напишіть ваш шаблон регулярного виразу
Введіть регулярний вираз **без оточуючих слешів**. Наприклад: <code>\b\w+@\w+\.\w+</code> для базового шаблону, схожого на email, або <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> з іменованими групами.
3. Встановіть прапорці (g, i, m, s, u, y)
Перемикайте прапорці, такі як <code>g</code> (глобальний), <code>i</code> (нечутливий до регістру) або <code>m</code> (багаторядковий). Внутрішньо тестер створює <code>new RegExp(pattern, flags)</code> так само, як це робить JavaScript.
4. Перегляньте відповідності та групи
Перевірте кожну відповідність з її індексом, опціональним кінцевим індексом та групами захоплення. Іменовані групи відображаються як JSON-подібна мапа, щоб ви могли скопіювати їх у тестові фікстури, парсери чи документацію.
5. Скопіюйте зведення
Використовуйте текстовий зведений вивід як швидкий звіт: він перелічує відповідності з індексами та групами, готовий для вставлення в завдання, коментарі до код-рев'ю чи шпаргалки.
Синтаксис регулярних виразів та деталі рушія
Класи символів та основи
Основні будівельні блоки, що підтримуються рушієм RegExp JavaScript.
| Шаблон | Значення | Приклад |
|---|---|---|
| . | Будь-який символ, крім розривів рядків (якщо не встановлено прапорець <code>s</code>) | <code>a.c</code> → відповідає <code>abc</code> |
| \d, \w, \s | Цифри, літерні символи, пробіли | <code>\d+</code> → <code>123</code> |
| \D, \W, \S | Заперечення вищезазначених | <code>\S+</code> → послідовності без пробілів |
| [abc] | Набір символів | <code>[aeiou]</code> → одна голосна |
| [^abc] | Заперечений набір | <code>[^0-9]</code> → не цифра |
| ^, $ | Початок і кінець вводу (або рядка з <code>m</code>) | <code>^Hello</code>, <code>!$</code> |
Квантифікатори
Повторення попередніх токенів із жадібною та лінивою поведінкою.
| Шаблон | Значення | Приклад |
|---|---|---|
| ? | 0 або 1 раз | <code>colou?r</code> → відповідає <code>color</code> та <code>colour</code> |
| * | 0 або більше | <code>a*b</code> → <code>b</code>, <code>aaab</code> |
| + | 1 або більше | <code>\d+</code> → <code>1</code>, <code>123</code> |
| {n} | Рівно n | <code>a{3}</code> → <code>aaa</code> |
| {n,} | Щонайменше n | <code>\d{3,}</code> → <code>123</code>, <code>1234</code> |
| {n,m} | Між n і m | <code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code> |
Групи, Lookarounds та Іменовані Захоплення
Додаткові функції, що надаються сучасними рушіями JavaScript.
| Функція | Синтаксис | Приклад |
|---|---|---|
| Групи захоплення | (...) | <code>(\d{3})-(\d{2})</code> → код + суфікс |
| Групи без захоплення | (?:...) | <code>(?:https?|ftp)://</code> |
| Зворотні посилання | \1, \2, ... | <code>(\w)\1</code> → <code>aa</code>, <code>bb</code> |
| Попередні перевірки | (?=...), (?!...) | <code>\w+(?=! )</code> → слово перед <code>! </code> |
| Зворотні перевірки* | (?<=...), (?<!...) | <code>(?<=#)\w+</code> → текст після <code>#</code> (*у сучасних рушіях) |
| Іменовані групи | (?<name>...) | <code>(?<year>\d{4})</code> → <code>groups.year</code> у результатах |
Прапорці (Опції)
Прапорці тестера безпосередньо відповідають прапорцям JavaScript RegExp.
| Прапорець | Назва | Ефект |
|---|---|---|
| g | Глобальний | Знайти всі збіги замість лише першого |
| i | Ігнорувати регістр | Пошук без урахування регістру |
| m | Багаторядковий | <code>^</code> і <code>$</code> відповідають межам рядків |
| s | DotAll | <code>.</code> також відповідає розривам рядків |
| u | Unicode | Увімкнення режиму Unicode та екранованих властивостей у сучасних рушіях |
| y | Закріплений | Збігається лише з поточним індексом (використовується з <code>lastIndex</code>) |
Продуктивність та Безпека
Базова рушій JavaScript виконує регулярні вирази синхронно. Для підтримки відповідності інтерфейсу, тестувальник обмежує кількість зібраних збігів (наприклад, перші 500 збігів у глобальному режимі). Це допомагає уникнути перевантаження інтерфейсу, але не замінює повні аудити продуктивності для складних або критичних шаблонів.
Інструменти регулярних виразів у командному рядку
Коли ваш шаблон працює тут, ви можете повторно використовувати той самий або подібний регулярний вираз у вашому терміналі, скриптах або завданнях CI:
Linux / macOS
Пошук за допомогою grep (розширені регулярні вирази)
grep -E 'pattern' file.txtЗнайти рядки, що відповідають заданому шаблону
Пошук та заміна за допомогою sed
sed -E 's/pattern/replacement/g' input.txt > output.txtПакетні заміни в текстових файлах
Windows / PowerShell
Пошук регулярних виразів у PowerShell
Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txtЗнайти шаблони SSN у американському стилі у файлах журналів (приклад)
Заміна регулярних виразів у PowerShell
(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txtПрості заміни на основі регулярних виразів
Практичні застосування регулярних виразів
Веб та фронтенд розробка
- Перевірка електронних адрес, імен користувачів, слагів або спеціальних ідентифікаторів у формах
- Витягнення параметрів маршруту з URL-адрес або шляхів
- Швидке прототипування шаблонів для клієнтської валідації
// Базова перевірка, схожа на email
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);// Параметри маршруту: /post/123
const match = pathname.match(/^\/post\/(\d+)/);Журнали, дані та бекенд
- Парсинг часових міток та рівнів з рядків журналу
- Нормалізація пробілів та очищення безладно тексту
- Витягнення ідентифікаторів, електронних адрес або посилань з неструктурованого вмісту
// Стиснення повторюваних пробілів
const normalized = text.replace(/\s+/g, ' ').trim();// Простий збігач рядків журналу
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);Очищення даних та швидкі скрипти
- Видалення небажаних HTML-тегів або атрибутів перед парсингом
- Витягнення всіх URL-адрес, електронних адрес або ідентифікаторів з великого блоба тексту
- Підготувати поля набору даних для імпорту в іншу систему
❓ Frequently Asked Questions
❓Чому моє регулярне вираження нічого не знаходить?
., ?, +), 2) Забування прапорця g при очікуванні кількох збігів, 3) Відсутність якорів (^, $) або меж слів (\b), 4) Використання функцій, які ваш рушій JavaScript ще не підтримує (наприклад, деякі lookbehinds). Спробуйте спростити шаблон і поступово додавати частини назад.⏱️Що означає час виконання (мс)?
performance.now(). Значення є приблизним вимірюванням одного запуску того, скільки часу зайняло виконання регулярного вираження на поточному вводі. Це корисно для виявлення явно дорогих шаблонів, але це не повний бенчмарк або гарантія продуктивної продуктивності.🔍Яка різниця між першим збігом і глобальним режимом?
g JavaScript повертає лише **перший** збіг (якщо є). З g тестер використовує input.matchAll() для збору **всіх** збігів (обмежених безпечним максимумом), включаючи індекси та групи захоплення. Використовуйте глобальний режим, коли вам потрібні кілька входжень.🌍Чи підтримує це Unicode та екранування <code>\p{...}</code>?
u для переходу в режим Unicode, який розблоковує такі речі, як \p{Letter} або \p{Script=Greek} у сучасних браузерах і останніх версіях Node.js.⚠️Чи може це виявити катастрофічний backtracking?
Pro Tips
Створюйте своє регулярне вираження невеликими частинами. Почніть з чогось простого, що знаходить збіг, потім поступово додавайте якорі, групи та квантифікатори.
Використовуйте іменовані групи захоплення (<code>(?<name>...)</code>) whenever possible. Вони роблять ваші збіги самодокументованими та набагато легшими для читання під час огляду коду.
Будьте обережні з <code>.*</code> та вкладеними квантифікаторами. Вони можуть спричинити сильний backtracking на великих вводах. Робіть шаблони більш конкретними або обмежуйте повторення за допомогою <code>{n,m}</code>.
Під час налагодження тимчасово видаліть прапорець <code>g</code> і зосередьтеся на першому збігу, щоб спростити ментальну модель.
Additional Resources
Other Tools
- Прикрашувач CSS
- Прикрашувач HTML
- Прикрашувач JavaScript
- Прикрашувач PHP
- Вибір кольору
- Екстрактор спрайтів
- Декодер Base64
- Кодувальник Base64
- Форматувальник C#
- Форматувальник CSV
- Dockerfile Formatter
- Форматувальник Elm
- Форматувальник ENV
- Форматувальник Go
- Форматувальник GraphQL
- Форматувальник HCL
- Форматувальник INI
- Форматувальник JSON
- Форматувальник LaTeX
- Форматувальник Markdown
- Форматувальник Objective-C
- Php Formatter
- Форматувальник Proto
- Форматувальник Python
- Форматувальник Ruby
- Форматувальник Rust
- Форматувальник Scala
- Форматувальник shell-скриптів
- Форматувальник SQL
- Форматер SVG
- Форматер Swift
- Форматер TOML
- Typescript Formatter
- Форматер XML
- Форматер YAML
- Форматер Yarn
- Мініфікатор CSS
- Html Minifier
- Javascript Minifier
- Мініфікатор JSON
- Мініфікатор XML
- Переглядач HTTP-заголовків
- PDF у текст
- Перевірка позицій у SERP
- Пошук Whois