Sintaxe de regex em uma tabela, mais 30 padrões prontos para e-mail, URL, telefone, código postal, senha, datas e mais. Cada um roda ao vivo com exemplos que devem ou não casar, e você pode editá-los.
Uma expressão regular é um padrão para encontrar texto. \d casa com um dígito, \w com um caractere de palavra, + significa um ou mais, ? torna algo opcional, e ^ e $ prendem a correspondência ao início e ao fim. Abaixo estão a sintaxe completa e 30 padrões testados, cada um verificado ao vivo com textos que devem e que não devem casar.
Seis símbolos que cobrem a maioria dos padrões
Copie um padrão e teste seu próprio texto na caixa ao lado. Todo padrão desta página vem com exemplos que devem casar e exemplos que não devem, e a página os executa no seu navegador para você ver cada resultado.
Uma prática é ^[^\s@]+@[^\s@.]+(\.[^\s@.]+)+$: algum texto, um @ e um domínio com pelo menos um ponto. Ela pega erros de digitação sem rejeitar endereços incomuns, mas válidos. Nenhuma regex sabe se um endereço existe de verdade, então envie um e-mail de confirmação.
Remova espaços, hífens e parênteses e depois verifique o formato E.164: ^\+[1-9]\d{6,14}$. Para números dos EUA e do Canadá digitados com separadores, use o padrão norte-americano desta página. Para uma verificação completa por país, uma biblioteca de telefones é mais confiável.
Fora de colchetes, ^ ancora a correspondência no início do texto, ou de cada linha com a flag m. Dentro de colchetes, como primeiro caractere, como em [^0-9], significa nenhum destes caracteres.
Os dialetos diferem em detalhes: Python escreve grupos nomeados como (?P<name>...), não suporta \p{L} no módulo re embutido e só permite lookbehind de tamanho fixo. Veja a tabela de linguagens desta página para as diferenças mais comuns.
Quantificadores gulosos como * e + pegam o máximo de texto possível e depois recuam. Adicionar ? os torna preguiçosos, então pegam o mínimo possível. Em <b>x</b><b>y</b>, <.+> casa com tudo, enquanto <.+?> casa só com <b>.
Referência de sintaxe de regex (dialeto JavaScript)
Flags do JavaScript
As mesmas ideias em JavaScript, Python e PHP
Algum texto, um @ e depois um domínio com pelo menos um ponto. Sem espaços.
Nenhuma regex verifica um endereço de e-mail por completo. Envie um e-mail de confirmação para saber se ele é real.
http ou https, um host com pelo menos um ponto, uma porta opcional e depois qualquer caminho, query ou fragmento sem espaços.
Em JavaScript, new URL(value) dentro de um bloco try é a verificação mais rigorosa.
Rótulos de letras, dígitos e hífens internos, separados por pontos, terminando em um domínio de topo só com letras.
Letras minúsculas e dígitos em grupos unidos por hífens simples.
Um sinal de mais, um código de país que não começa com 0 e de 7 a 15 dígitos no total, sem espaços.
Remova espaços, hífens e parênteses antes. Para validação real por país, use uma biblioteca de telefones.
+1 opcional, um código de área e um prefixo de 3 dígitos que não começam com 0 ou 1, depois 4 dígitos, com os separadores comuns.
Cinco dígitos, opcionalmente seguidos de um hífen e mais quatro (ZIP+4).
Uma ou duas letras, um dígito, uma letra ou dígito opcional, um espaço opcional e depois um dígito e duas letras.
Verifica só o formato. Aceita alguns códigos que não existem.
Letra, dígito, letra, espaço opcional, dígito, letra, dígito. As letras D, F, I, O, Q e U nunca são usadas, e W e Z nunca vêm primeiro.
Um # seguido de 3, 4, 6 ou 8 dígitos hexadecimais (as formas de 4 e 8 incluem transparência).
Pelo menos 12 caracteres, com uma letra minúscula, uma maiúscula, um dígito e um símbolo, verificados por lookaheads.
O tamanho importa mais que a mistura. Muitas equipes hoje exigem só um tamanho mínimo e verificam contra listas de senhas vazadas.
De 3 a 20 caracteres entre letras e dígitos; pontos e sublinhados só são permitidos entre eles, nunca duplicados.
Quatro números de 0 a 255 separados por pontos, sem zeros à esquerda.
Ano com quatro dígitos, mês de 01 a 12, dia de 01 a 31.
Aceita 2026-02-31. Faça o parse da data depois para rejeitar dias que não existem.
Horas de 00 a 23, dois-pontos, minutos de 00 a 59.
Horas de 1 a 12, minutos e depois am ou pm com pontos e espaço opcionais.
Sinal de menos opcional e depois 0 ou um número sem zeros à esquerda.
Um número inteiro com um ponto opcional e pelo menos um dígito depois dele.
Cifrão opcional, dígitos com grupos de vírgula corretos (ou nenhum) e centavos opcionais com dois dígitos.
Um número de 0 a 100 com decimais opcionais, seguido de %.
De 13 a 19 dígitos, opcionalmente agrupados com espaços ou hífens.
Só o formato. Use o algoritmo de Luhn e o seu provedor de pagamentos para validar um cartão.
MAJOR.MINOR.PATCH sem zeros à esquerda, com partes opcionais -prerelease e +build.
Dígitos hexadecimais no formato 8-4-4-4-12, com um dígito de versão de 1 a 8 e a variante padrão.
Uma tag de abertura, texto sem outras tags e a tag de fechamento correspondente (a referência \1 repete o nome).
Não faça parse de HTML completo com regex. Use DOMParser ou um parser de HTML.
Nada além de espaços, tabs ou quebras de linha. Útil para rejeitar campos de formulário vazios.
Um # seguido de letras (de qualquer alfabeto), dígitos ou sublinhados. Exige a flag u para \p{L}.
As formas comuns de watch, embed, shorts e link curto. O grupo 1 captura o ID do vídeo, de 11 caracteres.
Um nome de arquivo sem caracteres proibidos em caminhos, terminando em uma extensão de imagem comum.
Um @ e de 1 a 15 letras, dígitos ou sublinhados, a regra usada pelo X (antigo Twitter).
Encontra uma palavra digitada duas vezes seguidas, como 'o o'. Não é ancorado, então busca dentro do texto.
(vazio)
não casa
Copiar
Deve casar
Não deve casar
Teste seu próprio valor
Casa
Não casa
Testador rápido
Padrão
Flags
Texto
Nenhuma correspondência.
na posição {n}:
grupos:
Sintaxe
Flags
{n} padrões testados
Filtrar
email, data, telefone…
Nenhum padrão corresponde a esse filtro.
JavaScript, Python e PHP
Lançado em 2026-10, corrigido em 2026-11, previsto para 2027-02.
Comece grátis · Sem cartão de crédito