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

Щоб порівнювати за допомогою регулярного виразу, потрібно встановити тип зіставлення на "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]).*$
Дата у форматі YYYY-MM-DD: [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)
Дата у форматі DD/MM/YYYY: (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
Дата у форматі DD.MM.YYYY: (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
ОНОВ. Час у форматі HH:MM:SS: формат ^([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/
Останнє оновлення