Редактор

Очікування введення або виконання регулярного виразу…

Дії

?
?
?

Про інструмент Онлайн тестер регулярних виразів

Вставте текст, напишіть шаблон регулярного виразу, перемикайте прапорці та миттєво переглядайте збіги. Цей тестер використовує той самий рушій RegExp, що й сучасні JavaScript середовища, тому те, що ви бачите тут, ви отримаєте у вашому фронтенд-коді, скриптах Node.js або серверній валідації. Іменовані групи захоплення, lookarounds та режим Unicode підтримуються, коли ваше середовище виконання їх підтримує.

Чому варто використовувати цей тестер регулярних виразів

  • Синхронне відповідність з опціональним "живим" режимом для повторного запуску під час введення
  • Структурований список відповідностей з початковим індексом, кінцевим індексом, значенням та іменованими групами захоплення
  • Повна підтримка синтаксису RegExp JavaScript/ECMAScript (той самий рушій, що й у вашому середовищі JS)
  • Управління прапорцями: g, i, m, s, u, y – комбінуйте та експериментуйте безпечно
  • Базова оцінка продуктивності з часом виконання кожного запуску в мілісекундах
  • Текстовий зведений вивід для швидкого копіювання/вставлення в завдання, документацію або коміти
  • Відмінно підходить для навчання: прототипуйте шаблони без запуску повного проекту чи тестового набору
  • Ідеально для щоденних завдань: парсинг логів, валідація, витягування URL/ID, швидке очищення даних
  • Список результатів має м'яке обмеження для запобігання заморожуванню інтерфейсу при обробці великих текстів

🔧 Як використовувати тестер регулярних виразів for regex-tester

1

1. Вставте або введіть тестовий текст

Додайте текст, через який хочете шукати: логи, фрагменти, частини CSV, HTML, JSON – будь-який простий текст.

2

2. Напишіть ваш шаблон регулярного виразу

Введіть регулярний вираз **без оточуючих слешів**. Наприклад: <code>\b\w+@\w+\.\w+</code> для базового шаблону, схожого на email, або <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code> з іменованими групами.

3

3. Встановіть прапорці (g, i, m, s, u, y)

Перемикайте прапорці, такі як <code>g</code> (глобальний), <code>i</code> (нечутливий до регістру) або <code>m</code> (багаторядковий). Внутрішньо тестер створює <code>new RegExp(pattern, flags)</code> так само, як це робить JavaScript.

4

4. Перегляньте відповідності та групи

Перевірте кожну відповідність з її індексом, опціональним кінцевим індексом та групами захоплення. Іменовані групи відображаються як JSON-подібна мапа, щоб ви могли скопіювати їх у тестові фікстури, парсери чи документацію.

5

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> відповідають межам рядків
sDotAll<code>.</code> також відповідає розривам рядків
uUnicodeУвімкнення режиму 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

Чому моє регулярне вираження нічого не знаходить?

Поширені помилки: 1) Спеціальні символи не екрановані (як ., ?, +), 2) Забування прапорця g при очікуванні кількох збігів, 3) Відсутність якорів (^, $) або меж слів (\b), 4) Використання функцій, які ваш рушій JavaScript ще не підтримує (наприклад, деякі lookbehinds). Спробуйте спростити шаблон і поступово додавати частини назад.

⏱️Що означає час виконання (мс)?

Кожен запуск замірюється за допомогою performance.now(). Значення є приблизним вимірюванням одного запуску того, скільки часу зайняло виконання регулярного вираження на поточному вводі. Це корисно для виявлення явно дорогих шаблонів, але це не повний бенчмарк або гарантія продуктивної продуктивності.

🔍Яка різниця між першим збігом і глобальним режимом?

Без прапорця g JavaScript повертає лише **перший** збіг (якщо є). З g тестер використовує input.matchAll() для збору **всіх** збігів (обмежених безпечним максимумом), включаючи індекси та групи захоплення. Використовуйте глобальний режим, коли вам потрібні кілька входжень.

🌍Чи підтримує це Unicode та екранування <code>\p{...}</code>?

Так, коли ваш рушій JavaScript підтримує це. Увімкніть прапорець u для переходу в режим Unicode, який розблоковує такі речі, як \p{Letter} або \p{Script=Greek} у сучасних браузерах і останніх версіях Node.js.

⚠️Чи може це виявити катастрофічний backtracking?

Тестер може вказувати на повільні шаблони через час виконання, але він не може повністю запобігти катастрофічному backtracking: основний рушій все ще працює синхронно. Використовуйте цей інструмент як систему раннього попередження, а потім ретельно тестуйте та переглядайте складні шаблони у власній кодовій базі.

Pro Tips

Best Practice

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

Best Practice

Використовуйте іменовані групи захоплення (<code>(?<name>...)</code>) whenever possible. Вони роблять ваші збіги самодокументованими та набагато легшими для читання під час огляду коду.

Best Practice

Будьте обережні з <code>.*</code> та вкладеними квантифікаторами. Вони можуть спричинити сильний backtracking на великих вводах. Робіть шаблони більш конкретними або обмежуйте повторення за допомогою <code>{n,m}</code>.

Best Practice

Під час налагодження тимчасово видаліть прапорець <code>g</code> і зосередьтеся на першому збігу, щоб спростити ментальну модель.

Additional Resources

Other Tools