Utilia

Діаграма регулярного виразу

Перетворіть регулярний вираз JavaScript на залізничну діаграму з групами, альтернативами, циклами й перевірками навколо та експортуйте її в SVG або PNG.

Прапорці: будь-які з d g i m s u v y. Також можна вставити літерал, наприклад /\d+/g.

Групи захоплення
–
Альтернативи
–
Квантифікатори
–

Залізнична діаграма

Синій: літеральний текст. Зелений: типи символів і набори (червоний: виключений набір). Фіолетовий: якорі та межі. Помаранчевий: зворотні посилання. Пунктирні рамки: групи та перевірки навколо. Шлях над елементом пропускає його, шлях під ним повторює.

Як візуалізувати регулярний вираз

  1. Введіть або вставте шаблон у поле Регулярний вираз. Можна вставити й повний літерал JavaScript, наприклад /^\d{3}-\d{4}$/gm: скісні риски буде прибрано, а прапорці автоматично перейдуть у поле прапорців.
  2. За потреби додайте Прапорці (будь-які з d g i m s u v y). Прапорці змінюють спосіб малювання деяких частин: з m символи ^ і $ стають «початком рядка» та «кінцем рядка», а з s крапка означає «будь-який символ».
  3. Діаграма оновлюється під час введення. Кнопка Намалювати діаграму перемальовує її на вимогу, а Наступний приклад перебирає кілька поширених шаблонів (електронна пошта, номер телефону, hex-колір, ціна, тег HTML, URL).
  4. Читайте діаграму зліва направо, від заповненої крапки до крапки в колі. Кожен шлях, яким можна пройти, – це рядок, що відповідає шаблону.
  5. Скористайтеся Завантажити 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 символів. Дуже довгі вирази дають широку діаграму, яку можна прокручувати горизонтально; поділ їх на іменовані частини часто полегшує підтримку і діаграми, і самого виразу.