Про цей інструмент
Регулярні вирази — це предметно-спеціальна мова для зіставлення шаблонів у тексті. Вони є частиною обчислювальної техніки з 1968 року і тепер вбудовані в кожну сучасну мову програмування, текстовий редактор і інструмент пошуку в командному рядку. Синтаксис стислий, але схильний до помилок: невеликі зміни спричиняють дещо іншу поведінку відповідності, а складні вирази швидко стають нечитабельними. Тестер, який показує збіги в реальному часі, коли ви редагуєте шаблон, є найефективнішим способом розробки та перевірки регулярного виразу.
Цей тестер працює у вашому браузері за допомогою механізму регулярних виразів JavaScript (той самий, який використовує ваша програма, якщо вона працює в браузері). Шаблони та тестовий текст оновлюються реактивно: кожна зміна в будь-якому повторює збіг. Групи збігів підсвічуються, захоплені групи перераховуються, а прапори (без урахування регістру, багаторядковий, глобальний) виставляються для тестування.
Синтаксис регулярних виразів незначно відрізняється між двигунами. JavaScript відповідає специфікації ECMAScript; Python, PCRE (використовується PHP та багатьма іншими), Java і Go мають власні діалекти з перекриваючими, але не ідентичними функціями. Шаблони, розроблені тут, використовують синтаксис ECMAScript; перенесення між двигунами вимагає перевірки документації кожної цілі.
Навіщо використовувати тестер регулярних виразів
Відомо, що помилки регулярних виразів важко виправити після розгортання. Зразок, який виглядає прийнятним, може відповідати більше або менше, ніж було заплановано, матиме збій у граничних випадках або матиме катастрофічний відкат на певних вхідних даних. Інтерактивне тестування шаблонів на репрезентативних вхідних даних виявляє проблеми перед перевіркою коду та виробництвом.
Шаблони також виграють від документації. Показ регулярного виразу поряд із введенням, якому воно має відповідати, і введенням, якому він не повинен збігатися, робить намір явним. Майбутні супроводжувачі (включно з вами через шість місяців) більше цінуватимуть задокументовані тестові приклади, ніж розумні однорядкові тексти.
Як використовувати
Введіть шаблон, введіть тестовий вхід, подивіться виділені збіги в реальному часі.
- Введіть свій шаблон: Введіть шаблон регулярного виразу в поле шаблону. Працюють як літеральний регулярний вираз (/шаблон/прапорці), так і форми, що містять лише шаблон; прапори можна встановити за допомогою введення прапорів.
- Додайте тестовий вхід: Вставте зразок тексту, якому має відповідати шаблон (а в ідеалі також текст, якому він не повинен відповідати). Тестер перевіряє шаблон на вхідні дані та виділяє збіги.
- Встановити прапори: Загальні прапорці: g (глобальний, знайти всі збіги), i (незалежно від регістру), m (багаторядковий, ^ і $ збігаються на початку/закінченні рядка), s (dotall, . відповідає новому рядку), u (Юнікод).
- Перегляньте результати: Кожен збіг підсвічується у вхідних даних. Групи захоплення відображаються у списку з індексом і значенням групи. Тестер також показує кількість збігів і будь-які помилки компіляції в шаблоні.
Загальні випадки використання
Технічні деталі
Регулярний вираз JavaScript відповідає специфікації ECMAScript. Основні функції: класи символів ([abc], [^abc]), квантори (*, +, ?, {n,m}), чергування (|), групування ((...)), захоплені та незахоплені групи, перегляд вперед і назад (сучасні механізми), зворотні посилання, іменовані групи, екранування властивостей Unicode (з прапорцем u) і стандартний набір керуючих послідовностей.
Важливі відмінності від PCRE та Python: підтримка Lookbehind нещодавно з’явилася в JavaScript (2018+); іменовані групи використовують синтаксис (?<ім'я>...); для коректної роботи деяких кодів Unicode потрібен прапор u. Шаблони, призначені для міжмовного використання, слід перевіряти на відповідність документації кожної цільової програми.
Performance: backtracking-based regex engines (most including JavaScript) can have catastrophic backtracking on certain pathological patterns. Тести, які зависають у тестувальника, є ознакою того, що шаблон потребує спрощення — як правило, шляхом уникнення вкладених кванторів і неоднозначного чергування.
Поширені запитання
- Який регулярний вираз підтримує цей інструмент?
- Він використовує вбудований механізм RegExp у JavaScript, який підтримує стандартний синтаксис, включаючи пошук попереду, перегляд позаду (у сучасних браузерах), іменовані групи захоплення та екранування властивостей Unicode.
- Чи можу я протестувати заміни регулярних виразів?
- так Перейдіть у режим заміни, щоб ввести шаблон заміни. Ви можете використовувати $1, $2 тощо для зворотних посилань на групи захоплення та $<name> для іменованих груп.
- Чому мій регулярний вираз тут збігається інакше, ніж у Python/PHP?
- Різні мови програмування мають дещо різні механізми регулярних виразів. JavaScript не підтримує присвійні квантифікатори чи деякі специфічні функції PCRE. Основний синтаксис (класи символів, квантори, групи) є однаковим для всіх мов.
- Чи зберігає інструмент мої шаблони регулярних виразів?
- Ні, нічого не зберігається і не передається. Інструмент повністю працює у вашому браузері. Ви можете створити закладку або поділитися шаблонами, скопіювавши рядок регулярного виразу.
- Як зіставити літеральний спеціальний символ?
- Екрануйте його за допомогою зворотної скісної риски. Щоб зіставити буквальну крапку: \. Щоб відповідати буквальному зворотному слешу: \\. У класах символів [...] більшість спеціальних символів втрачають своє значення.
- Тестер працює на сервері?
- Ні. Компіляція шаблону та зіставлення відбуваються у вашому браузері за допомогою рідного об’єкта RegExp.
- Чи можу я тестувати шаблони для движків без JavaScript?
- Переважно. Для простих шаблонів основні двигуни погоджуються. Для розширених функцій (огляд назад, атомарні групи, присвійні квантифікатори, екранування властивостей Unicode) підтвердьте документацію цільового механізму.
- Чи обробляє він дуже великий вхід?
- До кількох мегабайт працює безперебійно. Великі вхідні дані можуть уповільнити або зависнути у веб-переглядачі, особливо з шаблонами, схильними до зворотного відстеження.
Related Articles
DeveloperEssential Developer Tools: JSON, Base64, RegEx, and More
A comprehensive overview of the developer utilities every programmer should know, from data format converters to encoding tools.
9 min readDeveloper & SecurityHashing, Encryption, and Encoding Explained: A Developer's Security Guide
Understand the differences between hashing, encryption, and encoding. Learn when to use MD5, SHA-256, Base64, AES, and other cryptographic tools in your applications.
10 min readData & ProductivitySpreadsheet & Data Conversion Guide: Excel, CSV, JSON, and More
Learn how to convert between spreadsheet and data formats like Excel, CSV, JSON, and XML. Practical tips for handling data migration, cleaning, and transformation.
10 min readPrivacy & TechnologyWhy Browser-Based Tools Are the Future: No Installs, No Uploads, No Risk
Discover why browser-based tools are replacing desktop software and cloud uploads. Learn how client-side processing keeps your files private while delivering powerful functionality.
7 min read