Діаграма регулярного виразу
Перетворіть регулярний вираз JavaScript на залізничну діаграму з групами, альтернативами, циклами й перевірками навколо та експортуйте її в SVG або PNG.
Прапорці: будь-які з d g i m s u v y. Також можна вставити літерал, наприклад /\d+/g.
- Групи захоплення
- –
- Альтернативи
- –
- Квантифікатори
- –
Залізнична діаграма
Синій: літеральний текст. Зелений: типи символів і набори (червоний: виключений набір). Фіолетовий: якорі та межі. Помаранчевий: зворотні посилання. Пунктирні рамки: групи та перевірки навколо. Шлях над елементом пропускає його, шлях під ним повторює.
Як візуалізувати регулярний вираз
- Введіть або вставте шаблон у поле Регулярний вираз. Можна вставити й повний літерал JavaScript, наприклад
/^\d{3}-\d{4}$/gm: скісні риски буде прибрано, а прапорці автоматично перейдуть у поле прапорців. - За потреби додайте Прапорці (будь-які з
d g i m s u v y). Прапорці змінюють спосіб малювання деяких частин: зmсимволи^і$стають «початком рядка» та «кінцем рядка», а зsкрапка означає «будь-який символ». - Діаграма оновлюється під час введення. Кнопка Намалювати діаграму перемальовує її на вимогу, а Наступний приклад перебирає кілька поширених шаблонів (електронна пошта, номер телефону, hex-колір, ціна, тег HTML, URL).
- Читайте діаграму зліва направо, від заповненої крапки до крапки в колі. Кожен шлях, яким можна пройти, – це рядок, що відповідає шаблону.
- Скористайтеся Завантажити SVG для чіткого векторного зображення (документація, презентації), Завантажити PNG для картинки з подвійною роздільністю або Копіювати код SVG, щоб вставити розмітку на вебсторінку.
Наведіть курсор на блок, щоб побачити, з якої частини шаблону він походить і де розташований.
Як читати залізничну діаграму
Залізничні діаграми, їх ще називають синтаксичними, описують граматику як набір колій. Регулярний вираз – це саме така граматика, тому малюнок показує його структуру значно краще, ніж щільний рядок символів:
- Сині блоки – літеральний текст, який має з’явитися саме так, як записано, наприклад
«@». - Зелені блоки – типи символів (
\dцифра,\wсимвол слова,.будь-який символ…) і класи символів. Клас на кшталт[\w.+-]стає блоком із заголовком «один із» зі списком елементів; заперечений клас[^…]– червоний із заголовком «жоден із». - Фіолетові «пігулки» – якорі та межі: початок і кінець тексту чи рядка, межа слова
\b. Вони відповідають позиції, а не символу. - Помаранчеві пунктирні блоки – зворотні посилання, як-от
\1чи\k<name>: той самий текст, що раніше захопила група. - Пунктирні рамки – групи. Групи захоплення нумеруються за порядком відкривної дужки («група №2 „domain“»); групи без захоплення
(?:…)у рамку не беруться. Перевірки вперед і назад отримують рожеву рамку з підписом «далі йде» або «перед цим іде», бо вони перевіряють текст, не споживаючи його. - Паралельні колії – альтернативи, розділені
|. - Колія над елементом дає змогу його пропустити (
?,*,{0,n}). Колія під ним зі стрілкою повертається назад, щоб повторити його (+,*,{n,m}). Нестандартні кількості підписано під петлею, наприклад «від 2 до 5 разів», а ліниві квантифікатори (+?,*?) позначено «ліниво».
Повідомлення про помилки з позиціями
Шаблон перевіряє власний рушій регулярних виразів JavaScript вашого браузера, тож інструмент приймає саме те, що приймає new RegExp() з тими самими прапорцями. Коли рушій відхиляє шаблон, інструмент вказує на проблемний символ з його позицією та позначкою під шаблоном. Він розпізнає зайву ), групу, яка ніколи не закривається, клас символів без ], квантифікатор, якому нічого повторювати (*a, a|+), самотній зворотний скісний на кінці та квантифікатори {n,m}, де n більше за m. Інші помилки, наприклад зворотне посилання на неіснуючу назву групи, показано з повідомленням браузера.
Вираз лише компілюється для перевірки: його ніколи не застосовують до жодного тексту, і нічого не залишає ваш браузер.
Поширені запитання
Який різновид регулярних виразів підтримує цей інструмент?
Регулярні вирази JavaScript (ECMAScript), зокрема іменовані групи, перевірку назад, escape-послідовності властивостей Unicode \p{…} і прапорець v із вкладеними класами. Шаблони з PCRE, Python чи Java зазвичай теж працюють, але синтаксис, специфічний для тих рушіїв, як-от посесивні квантифікатори чи (?P<name>…), відхиляється, бо браузер його не підтримує.
Чому групу без захоплення не намальовано як блок?
Група на кшталт (?:\.[\w-]+) лише об’єднує елементи, щоб квантифікатор чи альтернатива застосовувалися до всіх. Вона не створює захоплення, тому діаграма показує її вміст і петлю без рамки, щоб малюнок лишався читабельним. Групи з вбудованими прапорцями беруться в рамку й підписуються цими прапорцями.
Чим відрізняється колія пропуску від петлі?
Колія над елементом означає «нуль разів дозволено», а колія під ним – «можна повторювати». У ? є лише верхня колія, у + – лише нижня, а в * – обидві. Для квантифікатора на кшталт {2,4} петля має підпис «від 2 до 4 разів».
Чи можна використати діаграму у своїй документації?
Так. Експорт SVG – це окремий векторний файл із білим тлом і темними лініями, ідеальний для файлів README, вікі та презентацій. Експорт PNG створюється вдвічі більшим за малюнок на екрані для чіткого відображення на екранах із високою щільністю пікселів.
Чи є обмеження за розміром?
Шаблони можуть мати до 5000 символів. Дуже довгі вирази дають широку діаграму, яку можна прокручувати горизонтально; поділ їх на іменовані частини часто полегшує підтримку і діаграми, і самого виразу.
Схожі інструменти
- Тестер регулярних виразів Перевіряйте регулярні вирази JavaScript наживо: підсвічені збіги, групи захоплення, заміна та просте пояснення кожного токена шаблону.
- Дослідник AST для JavaScript Вставте JavaScript і дослідіть його абстрактне синтаксичне дерево (ESTree, Acorn) у браузері. Натискайте вузли, щоб побачити код, і експортуйте AST у JSON.
- Форматувальник і валідатор JSON Безкоштовний форматувальник і валідатор JSON: форматує, мінімізує та перевіряє JSON у браузері й показує помилки синтаксису з рядком і стовпцем.