Utilia

Визуелизација на regex како железнички дијаграм

Претворете JavaScript регуларен израз во јасен железнички дијаграм со групи, алтернативи, јамки и lookaround, па извезете го како SVG или PNG.

Знаменца: кое било од d g i m s u v y. Можете да залепите и литерал како /\d+/g.

Групи за снимање
–
Алтернативи
–
Квантификатори
–

Железнички дијаграм

Сино: литерален текст. Зелено: типови знаци и множества (црвено: исклучено множество). Виолетово: сидра и граници. Портокалово: повикувања назад. Испрекинати полиња: групи и lookaround. Патека над ставка ја прескокнува, патека под неа ја повторува.

Како да визуелизирате регуларен израз

  1. Впишете или залепете го изразот во Регуларен израз. Можете да залепите и цел JavaScript литерал како /^\d{3}-\d{4}$/gm: косите црти се отстрануваат, а знаменцата автоматски се преместуваат во полето за знаменца.
  2. Додајте Знаменца ако ви требаат (кое било од d g i m s u v y). Знаменцата менуваат како се цртаат некои делови: со m, ^ и $ стануваат „почеток на ред“ и „крај на ред“; со s, точката станува „кој било знак“.
  3. Дијаграмот се ажурира додека пишувате. Нацртај дијаграм го исцртува повторно на барање, а Следен пример ротира низ неколку вообичаени изрази (е-пошта, телефонски број, хекс боја, цена, HTML ознака, URL).
  4. Читајте го дијаграмот од лево кон десно, од исполнетата точка до точката со прстен. Секоја патека што можете да ја следите е низа што изразот може да ја совпадне.
  5. Користете Преземи SVG за остра векторска слика (документација, презентации), Преземи PNG за слика со двојна резолуција или Копирај SVG код за да ја залепите ознаката во веб-страница.

Задржете го глушецот над полето за да го видите делот од изразот од кој потекнува и неговата позиција.

Како се чита железнички дијаграм

Железничките дијаграми, наречени и синтаксни дијаграми, опишуваат граматика како збир патеки. Регуларниот израз е токму таква граматика, па цртежот ја покажува неговата структура многу подобро од густ ред симболи:

  • Сините полиња се литерален текст што мора да се појави како што е напишан, на пример „@“.
  • Зелените полиња се типови знаци (\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 escape за својства \p{…} и знамето v со вгнездени класи. Изразите од PCRE, Python или Java обично работат исто така, но синтаксата специфична за тие машини, како посесивни квантификатори или (?P<name>…), се одбива затоа што прелистувачот не ја поддржува.

Зошто мојата група без снимање не е нацртана како поле?

Група како (?:\.[\w-]+) само ги групира ставките за квантификаторот или алтернацијата да важи за сите. Не создава снимање, па дијаграмот ја покажува нејзината содржина и јамка без рамка, што го одржува цртежот читлив. Групите со вградени знаменца се врамуваат и се означуваат со тие знаменца.

Која е разликата меѓу патеката за прескокнување и јамката?

Патеката над ставката значи „нула пати е дозволено“, а патеката под неа значи „може да се повтори“. ? има само горна патека, + само долна, а * има обете. За квантификатор како {2,4} јамката ја носи ознаката „2 до 4 пати“.

Можам ли да го користам дијаграмот во мојата документација?

Да. SVG извозот е самостојна векторска датотека со бела позадина и темни линии, идеална за README датотеки, вики и презентации. PNG извозот е исцртан на двојна големина од цртежот на екранот за остар приказ на екрани со висока густина.

Има ли ограничување на големината?

Изразите можат да бидат долги до 5.000 знаци. Многу долгите изрази создаваат широк дијаграм што можете да го лизгате хоризонтално; нивното делење на именувани делови често го олеснува одржувањето и на дијаграмот и на изразот.