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 em vez de outra coisa.

Para comparar usando uma expressão regular, você precisa definir o tipo de correspondência como "Correspondência RegEx".
As expressões regulares devem ser escritas no próprio gatilho, não nas variáveis usadas para correspondência!
Ao coletar dados, os usuários frequentemente 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 solicitará que ele tente novamente.

O bloco de entrada de número de telefone tem duas conexões de saída: uma sem nenhum gatilho e a outra com um gatilho 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 do número de telefone:
-
Conexão primária (número válido)
- Gatilho: Um número de telefone formatado corretamente.
- Ação: Adiciona o número ao aplicativo e prossegue.
-
Conexão de fallback (entrada inválida)
- Prioridade: Menor que a conexão primária.
- Gatilho: 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ó progrida após fornecer dados válidos, recebendo 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 geral:
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$ -
Letras e números (latim):
^[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 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])
ATUALIZAÇÃO. 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 -
Números inteiros e 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+ -
ATUALIZAÇÃO. E-mail:
^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$ -
ATUALIZAÇÃO. 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 -
ATUALIZAÇÃO. Hora no formato HH:MM:SS:
^([0-1]\d|2[0-3])(:[0-5]\d){2}$ -
ATUALIZAÇÃO. 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/


