Skip to main content
CheckTown
Інструменти

Тестування Regex: Пишіть і відлагоджуйте регулярні вирази миттєво

Опубліковано 5 хв читання
У цій статті

Що таке регулярний вираз?

Регулярний вираз (regex або regexp) — це послідовність символів, яка визначає шаблон пошуку. Їх використовують для пошуку, співставлення, вилучення, заміни та перевірки тексту. Шаблони regex підтримуються нативно практично в кожній мові програмування і є незамінним інструментом у арсеналі будь-якого розробника.

Regex може варіюватися від простих шаблонів на кшталт \d+ (одна або більше цифр) до складних багаторядкових конструкцій з випереджальними перевірками, зворотними посиланнями та іменованими групами. Незважаючи на потужність, складні regex важко читати й підтримувати — тестер regex допомагає будувати та перевіряти шаблони в інтерактивному режимі.

Як працює наш тестер regex

Тестер regex забезпечує відповідність у реальному часі з візуальним підсвічуванням під час введення.

  • Відповідність у реальному часі — підсвічує всі збіги в тестовому рядку під час введення шаблону
  • Підтримка прапорців — перемикайте прапорці global, case-insensitive, multiline та dotAll
  • Відображення захоплених груп — показує захоплені групи та іменовані захоплення для складних шаблонів

Спробуйте безкоштовно — реєстрація не потрібна

Протестувати регулярний вираз →

Коли використовувати тестер regex

Тестер regex корисний завжди, коли потрібно розробити або налагодити шаблон перед вбудовуванням його у код.

  • Валідація форм — розробляйте та тестуйте шаблони для перевірки email, телефону, поштового індексу або довільних полів введення
  • Аналіз логів — створюйте regex для вилучення полів з рядків логів перед обробкою за допомогою grep або awk
  • Вилучення даних — тестуйте шаблони для скрейпінгу або розбору структурованих даних з тексту або HTML

Часті запитання

У чому різниця між жадібними та лінивими квантифікаторами?

Жадібні квантифікатори (*, +, ?) захоплюють якомога більше. Ліниві квантифікатори (*?, +?, ??) захоплюють якомога менше. Наприклад, для рядка <a>text</a> шаблон <.*> збігається з усім рядком (жадібно), тоді як <.*?> збігається лише з <a> (ліниво). Ліниві квантифікатори є незамінними при розборі HTML або вкладених структур.

Як збігатися з буквальною крапкою або іншим спеціальним символом у regex?

Екрануйте символ зворотною скісною рискою: \. збігається з буквальною крапкою, \* — з буквальною зірочкою. Спеціальними символами, що потребують екранування, є: . * + ? ^ $ { } [ ] | ( ) \. Якщо потрібно знайти будь-який із них буквально, завжди додавайте перед ним \.

Чому мій regex працює по-різному в JavaScript та Python?

Різні мови реалізують дещо відмінні різновиди regex. Основні відмінності: Python використовує (?P<name>) для іменованих груп, тоді як JavaScript — (?<name>); підтримка ретроспективних перевірок відрізняється; деякі можливості, як-от \K (keep), існують у PCRE, але не в JavaScript. Завжди тестуйте regex у контексті цільової мови програмування.

Пов'язані інструменти