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