Testador de regex online (JavaScript)
O testador de regex aplica uma expressão regular a um texto e destaca cada trecho que casa, com a posição e o conteúdo de cada grupo de captura. Ele usa o motor de expressões regulares do JavaScript, o mesmo do seu navegador e do Node.js, e roda localmente, sem enviar o texto a nenhum servidor.
Destaque
Casamentos
O teste roda no seu navegador, com o motor de expressões regulares do JavaScript. Padrões muito complexos em textos longos podem travar a aba.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite a expressão no campo entre as barras, sem as barras.
- Marque as flags que precisar, como g para achar todos os casamentos e i para ignorar maiúsculas.
- Cole o texto de teste e veja o destaque e a lista de casamentos com seus grupos.
Como funciona
A ferramenta cria a expressão com o construtor RegExp do JavaScript e percorre o texto coletando cada casamento, com a posição inicial e os grupos de captura, inclusive os nomeados, escritos como (?<nome>...).
As flags mudam o comportamento: g procura todos os casamentos (sem ela, só o primeiro), i ignora maiúsculas e minúsculas, m faz ^ e $ valerem em cada linha, s faz o ponto pegar também quebras de linha e u ativa o modo Unicode.
A sintaxe é a do JavaScript. Ela é parecida com a de Python, PHP e Java, mas não idêntica: por exemplo, JavaScript não tem grupos atômicos nem quantificadores possessivos. Teste na linguagem em que a expressão vai rodar quando o comportamento for crítico.
Expressões que mais se usam
\d+ um ou mais dígitos
\d{3}\.\d{3}\.\d{3}-\d{2} um CPF com pontuação
^[\w.+-]+@[\w-]+\.[\w.-]+$ um e-mail simples
(?<ano>\d{4})-(?<mes>\d{2}) ano e mês, com grupos nomeados
Em código
Expressões prontas para CEP, telefone com DDD e e-mail. Em Python e PHP, o cifrão aceita uma quebra de linha no fim: por isso os exemplos usam fullmatch e o modificador D.
// CEP: 5 dígitos, hífen opcional e 3 dígitos
const reCEP = /^\d{5}-?\d{3}$/;
// Telefone com DDD: celular (9 + 8 dígitos) ou fixo (começa de 2 a 5)
const reTelefone = /^\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}$/;
// E-mail: só confere o formato geral. A prova real é enviar um e-mail de confirmação.
const reEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
const cepValido = (v) => reCEP.test(v);
const telefoneValido = (v) => reTelefone.test(v);
const emailValido = (v) => reEmail.test(v); import re
# re.ASCII: sem ele, \d também aceita dígitos de outros alfabetos, como ٣
RE_CEP = re.compile(r"\d{5}-?\d{3}", re.ASCII)
RE_TELEFONE = re.compile(r"\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}", re.ASCII)
RE_EMAIL = re.compile(r"[^\s@]+@[^\s@]+\.[^\s@]+")
# fullmatch exige que o texto inteiro combine (o $ aceitaria uma quebra de linha no fim)
def cep_valido(v: str) -> bool:
return RE_CEP.fullmatch(v) is not None
def telefone_valido(v: str) -> bool:
return RE_TELEFONE.fullmatch(v) is not None
def email_valido(v: str) -> bool:
return RE_EMAIL.fullmatch(v) is not None <?php
// O modificador D faz o $ recusar uma quebra de linha no fim do texto
const RE_CEP = '/^\d{5}-?\d{3}$/D';
const RE_TELEFONE = '/^\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}$/D';
const RE_EMAIL = '/^[^\s@]+@[^\s@]+\.[^\s@]+$/D';
function cepValido(string $v): bool
{
return preg_match(RE_CEP, $v) === 1;
}
function telefoneValido(string $v): bool
{
return preg_match(RE_TELEFONE, $v) === 1;
}
function emailValido(string $v): bool
{
return preg_match(RE_EMAIL, $v) === 1;
} Perguntas frequentes
Por que a regex só encontra o primeiro resultado?
Porque falta a flag g (global). Sem ela, o JavaScript para no primeiro casamento. Marque a opção g para listar todos.
A regex funciona igual em Python, PHP ou Java?
A base é a mesma, mas há diferenças. Os grupos nomeados, por exemplo, são escritos como (?<nome>...) em JavaScript e (?P<nome>...) em Python. Para expressões complexas, confirme na linguagem de destino.
Preciso escapar a barra invertida no meu código?
Em uma string de código, sim: \d vira "\\d" em JavaScript, Java e outras linguagens. Já em um literal /\d/ de JavaScript e neste testador, você escreve só \d.
Por que a aba trava com algumas expressões?
Expressões com repetições aninhadas, como (a+)+, podem exigir um número enorme de tentativas em certos textos, o chamado backtracking catastrófico. Simplifique o padrão ou reduza o texto de teste.
Outras ferramentas que podem ajudar
- Validador JSONValide JSON online e veja a linha e a coluna do erro, o tipo e a profundidade
- Codificar e Decodificar URLCodifique e decodifique URL (percent-encoding) online: trechos de parâmetros ou URL completa, com acentos
- Gerador de CPFGere CPF válido para testar sistemas e formulários
- Formatador JSONFormate, indente, minifique e valide JSON online
- Conversor de Timestamp UnixConverta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp
- Comparador JSONCompare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada