# Список полезных регулярных выражений

Регулярные выражения — это условие, с помощью которого бот может проверять формат введенных данных (например, что человек ввел именно номер телефона, а не что-то иное)

<figure><img src="/files/fTX3j0v14fkO1epZCvGB" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
Для сравнения по регулярному выражению необходимо установить выбор соответствия  "Регулярное выражение".&#x20;
{% endhint %}

{% hint style="info" %}
Регулярные выражения пишутся в условие, не в переменные для сравнения!

<img src="/files/pzixgtThPYjICLtJtW1c" alt="" data-size="original">
{% endhint %}

При сборе данных пользователь часто вводит не то, что его просят ввести. Приведем типовую схему проверки корректности номера телефона:

<figure><img src="/files/wbiyEuUrb14wwhZ9A1qD" alt=""><figcaption></figcaption></figure>

1. Создайте блок, в котором будете спрашивать у клиента номер телефона (или другие данные);
2. Из данного блока создайте два блока ниже.
3. Перейдите в настройки стрелки и в поле "Условие" укажите проверку номера телефона (или других данных) и установите выбор соответствия "Регулярное выражение";
4. Третий блок сделайте блоком "Не состояние" — в этот блок клиент не перейдет, но клиенту придет сообщение, если номер телефона не пройдет проверку.&#x20;

Теперь протестируем схему:

<figure><img src="/files/iE4oKVcAKUGtTdGhdqx3" alt="" width="563"><figcaption></figcaption></figure>

Из блока, спрашивающего номер телефона, идет 2 соединения. Одно без условия, а второе с условием регулярное выражение российского номера телефона:&#x20;

^((\\+7|7|8)+(\[0-9]){10})$

Соединение с условием как раз добавляет его в заявку и сработает только тогда, когда встретится корректный номер телефона. Второе соединение сработает во всех других случаях, так как у него ниже приоритет. По второму соединению пользователю скажут, что он ввел некорректные данные, и направят обратно вводить номер телефона.

## **Список полезных регулярных выражений**

* **Ввод только цифр, начиная с 1:**\
  ^\[1-9]+\[0-9]\*$
* **Ввод только цифр, начиная с 0:**\
  ^\[0-9]+\[0-9]\*$
* **Номер кредитки:**\
  \[0-9]{13,16}
* **ICQ:**\
  (\[1-9])+(?:-?\d){4,}
* **Номер телефона(Россия):**\
  ^((\\+7|7|8)+(\[0-9]){10})$
* **Номер телефона**\
  ^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
* **Фамилия+Имя или же ФИО полностью**&#x20;
* ^\[а-яА-ЯёЁa-zA-Z]+ \[а-яА-ЯёЁa-zA-Z]+ ?\[а-яА-ЯёЁa-zA-Z]+$
* **Набор из букв и цифр** (латиница):\
  ^\[a-zA-Z0-9]+$
* **Набор из букв и цифр** (латиница + кириллица):\
  ^\[а-яА-ЯёЁ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])\
  **UPD.** Более строгая проверка:\
  (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+
* **UPD. E-mail**:\
  ^\[-\w.]+@(\[A-z0-9]\[-A-z0-9]+\\.)+\[A-z]{2,4}$
* **UPD. URL** на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф»:\
  \~^(?:(?: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
* **UPD. Время в формате HH:MM:SS**:\
  ^(\[0-1]\d|2\[0-3])(:\[0-5]\d){2}$
* **UPD. Mac-адрес**:\
  (\[0-9a-fA-F]{2}(\[:-]|$)){6}$|(\[0-9a-fA-F]{4}(\[.]|$)){3}

Существует большое количество регулярных выражений, если в этом списке вы не нашли нужное, стоит обратиться к поисковым системам.

Тестировать регулярные выражения удобно на сайте: <https://regex101.com/>

## Видеообзор

{% embed url="<https://youtu.be/wvFy2rHnGYk>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.salebot.pro/chatbots/peremennye-i-funkcii/spisok-poleznykh-regulyarnykh-vyrazhenii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
