Регулярні вирази — це шаблони, які дозволяють боту перевіряти формат введених користувачем даних — наприклад, переконатися, що введено номер телефону, а не щось інше.

Для порівняння за допомогою регулярного виразу потрібно встановити тип збігу "RegEx match".
Регулярні вирази слід писати безпосередньо в тригері, а не в змінних, які використовуються для збігу!
Під час збору даних користувачі часто вводять щось інше, ніж те, що їх просять. Ось типовий сценарій перевірки введення номера телефону. Якщо користувач не вводить дійсний номер телефону, бот запропонує йому спробувати ще раз.

Блок введення номера телефону має два вихідні з'єднання: одне без тригера, а інше з тригером, який використовує регулярний вираз для збігу з номером телефону.
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
Цей сценарій використовує два з'єднання для обробки перевірки номера телефону:
-
Основне з'єднання (дійсний номер)
- Тригер: Правильно відформатований номер телефону.
- Дія: Додає номер до заявки та продовжує.
-
Резервне з'єднання (недійсне введення)
- Пріоритет: Нижчий, ніж у основного з'єднання.
- Тригер: Будь-яке введення, яке не є дійсним номером телефону.
- Дія: Повідомляє користувача про помилку та перенаправляє його спробувати ще раз.
Це гарантує, що користувач продовжить лише після надання дійсних даних, отримуючи негайний зворотний зв'язок про будь-які помилки.
Список корисних регулярних виразів:
-
Числове введення, лише цифри, що починаються з 1:
^[1-9]+[0-9]*$ -
Числове введення, лише цифри, що починаються з 0:
^[0-9]+[0-9]*$ -
Номер кредитної картки:
[0-9]{13,16} -
Загальний номер телефону:
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$ -
Літери та цифри (латиниця):
^[a-zA-Z0-9]+$ -
Домен (наприклад, abcd.com):
^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$ -
URL (наприклад, abcd.com):
(https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]* -
IPv4:
((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?) -
IPv6:
((^|:)([0-9a-fA-F]{0,4})){1,8}$ -
Ім'я користувача (обмеження 2-20 символів, можуть бути літери та цифри, перший символ має бути літерою):
^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$ -
Пароль (малі та великі латинські літери, цифри):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$ -
Надійний пароль (великі, малі літери, цифри/спеціальні символи, мінімум 8 символів):
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ -
Дата у форматі РРРР-ММ-ДД:
[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])
Оновл. Суворіша перевірка дати:
(19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31) -
Дата у форматі ДД/ММ/РРРР:
(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d -
Дата у форматі ДД.ММ.РРРР:
(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)\d\d -
Цілі числа та числа з плаваючою комою (крапка як десятковий роздільник)
\-?\d+(\.\d{0,})? -
UUID:
^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$ -
Широта або довгота:
-?\d{1,3}\.\d+ -
Оновл. E-mail:
^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$ -
Оновл. URL
~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&?+=\~/-]*)?(?:#[^ '\"&]*)?$~i -
Оновл. Час у форматі ГГ:ХХ:СС:
^([0-1]\d|2[0-3])(:[0-5]\d){2}$ -
Оновл. Mac-адреса:
([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}
Існує велика кількість регулярних виразів. Якщо ви не знайшли потрібного в цьому списку, варто скористатися пошуковою системою.
Ви можете зручно тестувати регулярні вирази на таких сайтах, як: https://regex101.com/