# Expressões regulares

Expressões regulares são padrões que permitem que um bot valide o formato da entrada do usuário — por exemplo, para garantir que a entrada seja um número de telefone, e não outra coisa.

<div data-with-frame="true"><figure><img src="/files/7f114d68767527ebba770b3a81517672786686b5" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Para comparar usando uma expressão regular, você precisa definir o tipo de correspondência como "Correspondência RegEx".
{% endhint %}

{% hint style="info" %}
As expressões regulares devem ser लिख? no trigger em si, não nas variáveis usadas para correspondência!
{% endhint %}

Ao coletar dados, os usuários часто inserem algo diferente do que foi solicitado. Aqui está um fluxo típico para validar a entrada de um número de telefone. Se o usuário não inserir um número de telefone válido, o bot pedirá que ele tente novamente.

<div data-with-frame="true"><figure><img src="/files/c8617c74c762ad8ee384524a5eeeef91409ffd64" alt="" width="563"><figcaption></figcaption></figure></div>

O bloco de entrada de número de telefone tem duas conexões de saída: uma sem nenhum trigger e outra com um trigger que usa uma expressão regular para corresponder a um número de telefone.

^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$

Este fluxo usa duas conexões para lidar com a validação de número de telefone:

1. **Conexão principal (número válido)**
   * **Trigger:** Um número de telefone formatado corretamente.
   * **Ação:** Adiciona o número à aplicação e continua.
2. **Conexão de fallback (entrada inválida)**
   * **Prioridade:** Menor do que a conexão principal.
   * **Trigger:** Qualquer entrada que não seja um número de telefone válido.
   * **Ação:** Informa o usuário sobre o erro e o redireciona para tentar novamente.

Isso garante que o usuário só avance depois de fornecer dados válidos, enquanto recebe feedback imediato sobre quaisquer erros.

## Uma lista de expressões regulares úteis:

* **Entrada numérica apenas dígitos começando com 1:**\
  ^\[1-9]+\[0-9]\*$
* **Entrada numérica apenas dígitos começando com 0:**\
  ^\[0-9]+\[0-9]\*$
* **Número de cartão de crédito:**\
  \[0-9]{13,16}
* **Número de telefone genérico:**\
  ^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
* **Letras e números** (Latino):\
  ^\[a-zA-Z0-9]+$
* **Domínio** (ex.: abcd.com):\
  ^(\[a-zA-Z0-9]\(\[a-zA-Z0-9\\-]{0,61}\[a-zA-Z0-9])?\\.)+\[a-zA-Z]{2,6}$
* **URL** (ex.: 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}$
* **Nome de usuário** (com limite de 2 a 20 caracteres, que podem ser letras e números, o primeiro caractere precisa ser uma letra):\
  ^\[a-zA-Z]\[a-zA-Z0-9-\_\\.]{1,20}$
* **Senha** (Letras latinas minúsculas e maiúsculas, números):\
  ^(?=.\*\d)(?=.\*\[a-z])(?=.\*\[A-Z])(?!.\*\s).\*$
* **Senha forte** (maiúsculas, minúsculas, números/caracteres especiais, mínimo de 8 caracteres):\
  (?=^.{8,}$)((?=.\*\d)|(?=.\*\W+))(?!\[.\n])(?=.\*\[A-Z])(?=.\*\[a-z]).\*$
* **Data no formato AAAA-MM-DD:**\
  \[0-9]{4}-(0\[1-9]|1\[012])-(0\[1-9]|1\[0-9]|2\[0-9]|3\[01])\
  **UPD.** Validação de data mais rigorosa:\
  (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)
* **Data no formato DD/MM/AAAA:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[- /.]\(0\[1-9]|1\[012])\[- /.]\(19|20)\d\d
* **Data no formato DD.MM.AAAA:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[.]\(0\[1-9]|1\[012])\[.]\(19|20)\d\d
* I**nteiros e números de ponto flutuante** (ponto como separador decimal)\
  \\-?\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}$
* **Latitude ou Longitude:**\
  -?\d{1,3}\\.\d+
* **UPD. E-mail**:\
  ^\[-\w.]+@(\[A-z0-9]\[-A-z0-9]+\\.)+\[A-z]{2,4}$
* <mark style="color:vermelho;">**UPD. URL**</mark> \
  \~^(?:(?: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. Hora no formato HH:MM:SS**: formato\
  ^(\[0-1]\d|2\[0-3])(:\[0-5]\d){2}$
* **UPD. Endereço MAC**:\
  (\[0-9a-fA-F]{2}(\[:-]|$)){6}$|(\[0-9a-fA-F]{4}(\[.]|$)){3}

Há um grande número de expressões regulares disponíveis. Se você não encontrar a que precisa nesta lista, é uma boa ideia usar um mecanismo de busca.

Você pode testar expressões regulares convenientemente em sites como: <https://regex101.com/>


---

# 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.mavibot.ai/doc/pt/chatbot/functions/regex.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.
