Testador de expressões regulares
Digite um padrão de expressão regular e um texto de teste para destacar as correspondências e listar os valores dos grupos de captura. Compatível com as flags g/i/m/s/u usando o RegExp nativo do JavaScript.
Padrões de expressões regulares comuns
| Uso | Padrão | Descrição |
|---|---|---|
| Endereço de e-mail | ^[\w.+-]+@[\w-]+\.[\w.-]+$ | Corresponde a um formato simplificado de e-mail composto por um nome de usuário e um domínio separados por @ (não totalmente compatível com a RFC). |
| Telefone celular (Brasil) | ^\(?\d{2}\)?\s?9\d{4}-?\d{4}$ | Corresponde a números de celular brasileiros com DDD de 2 dígitos e nono dígito, com ou sem parênteses e hífen. |
| URL | https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? | Extrai strings de URL que começam com http:// ou https://, incluindo caminho e parâmetros de consulta. |
| CEP | ^\d{5}-?\d{3}$ | Corresponde ao CEP brasileiro no formato de 5 dígitos, hífen opcional e mais 3 dígitos (ex.: 01310-100). |
| Código de cor hexadecimal | ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ | Corresponde a cores hexadecimais do CSS no formato completo #RRGGBB ou abreviado #RGB. |
| Somente dígitos | ^[0-9]+$ | Verifica se a string inteira é composta apenas por dígitos (0-9). |
O que é um testador de expressões regulares
Uma expressão regular (regex) é uma minilinguagem compacta para buscar, extrair e validar padrões dentro de um texto. Tarefas como "verificar se isto parece um endereço de e-mail válido" ou "extrair apenas os endereços IP de um arquivo de log" podem ser expressas em um único padrão. A contrapartida é que a sintaxe é densa e cheia de símbolos, tornando difícil saber, apenas lendo o padrão, se ele vai se comportar como pretendido.
Esta ferramenta avalia em tempo real o padrão e o texto de teste que você digita usando o mecanismo RegExp nativo do JavaScript, e destaca em amarelo cada correspondência diretamente no texto. Ela também lista o valor de cada grupo de captura, o número total de correspondências e qualquer erro de sintaxe, permitindo que você refine um padrão — ajustar, ver o que mudou, ajustar novamente — inteiramente dentro do navegador, sem escrever código ou configurar um ambiente de execução.
Como tudo é executado no próprio navegador com o mesmo mecanismo que alimenta expressões regulares no JavaScript do lado do cliente, em validadores de formulário e em backends Node.js, o que você vê aqui é uma prévia fiel de como o padrão vai se comportar quando for levado à produção. É uma forma rápida de testar um padrão complicado antes de colá-lo em código real.
Como usar o testador de expressões regulares
-
Digite seu padrão de expressão regular
Insira o padrão que deseja testar no campo superior. As barras ao redor
/ /são adicionadas automaticamente, então basta digitar o corpo do padrão. - Escolha as flags necessárias Marque as caixas g, i, m, s e u conforme necessário. Mantenha a flag g ativada se quiser ver todas as correspondências, e não apenas a primeira.
- Cole um texto de teste Cole ou digite o texto com o qual deseja comparar na área de texto abaixo. Textos com várias linhas são totalmente suportados.
- Confira os destaques e a tabela O resultado é recalculado automaticamente enquanto você digita. As substrings correspondentes ficam destacadas em amarelo, e a tabela abaixo lista a correspondência completa e o valor de cada grupo de captura para cada ocorrência.
- Refine o padrão Se o número de correspondências ou o intervalo encontrado não for o esperado, ajuste diretamente o padrão ou as flags e observe como o resultado destacado muda.
Dicas para aproveitar melhor
- O
/flagsexibido ao lado do campo de padrão permite ver rapidamente qual combinação de flags está ativa no momento. - Somente as partes entre
()contam como grupos de captura. Use um grupo não capturante(?:...)se só precisar agrupar uma condição sem poluir a lista de grupos. - Sem a flag g, apenas a primeira correspondência é encontrada. Ative-a se quiser contar todas as ocorrências no texto.
- O botão "Inserir exemplo" carrega um caso de extração de e-mail, um bom ponto de partida para entender como os grupos de captura se comportam.
- Todo o processamento acontece inteiramente no seu navegador — o padrão e o texto de teste digitados nunca são enviados a nenhum servidor.
Casos de uso comuns de um testador de expressões regulares
Projetar regras de validação de formulário
Verifique aqui uma expressão regular antes de conectá-la a um formulário: confirme que as entradas esperadas (com ou sem hífen, com caracteres acentuados, etc.) passam pela validação e que entradas malformadas são corretamente rejeitadas.
Extrair campos de logs do servidor
Cole um trecho real de um log de acesso ou de erro e construa um padrão que extraia apenas os campos que você precisa, como endereços IP, timestamps ou códigos de status HTTP.
Limpar dados de CSV ou texto livre
Antes de normalizar números de telefone ou datas com formatação inconsistente, use a ferramenta para classificar quais linhas correspondem a um determinado padrão e quais não correspondem.
Verificar o comportamento durante a revisão de código
Quando a expressão regular de um colega é difícil de entender de relance, cole valores de exemplo reais e visualize exatamente o que ela corresponde para resolver a dúvida na hora.
Checar efeitos colaterais ao editar um padrão
Ao modificar uma expressão regular existente, compare as correspondências destacadas antes e depois da alteração usando o mesmo texto de teste, para confirmar que o comportamento não mudou de forma inesperada.
Glossário de expressões regulares
- Grupo de captura
- Uma parte do padrão entre parênteses
(). Use quando precisar extrair uma parte da correspondência geral, e não a string inteira correspondida. A tabela de resultados desta ferramenta lista o valor de cada grupo como Grupo 1, Grupo 2, e assim por diante. - Grupo não capturante
- Um grupo escrito como
(?:...). Use quando precisar apenas de parênteses para agrupar uma condição — isso mantém a numeração dos seus grupos de captura reais organizada e a lista de resultados mais fácil de ler. - Retrorreferência
- Uma forma de reutilizar, mais adiante no mesmo padrão, o texto que já foi correspondido por um grupo de captura anterior. Grupos numerados são referenciados com
\1, e grupos nomeados com\k<nome>. Muito usado para detectar palavras repetidas ou tokens duplicados. - Correspondência preguiçosa (não gulosa)
- Adicionar
?logo após um quantificador (como*ou+) faz com que ele corresponda à menor quantidade de texto possível. Por padrão (correspondência gulosa), os quantificadores tentam corresponder à maior quantidade possível, então a distinção importa ao extrair algo específico, como o conteúdo de uma única tag HTML. - Lookahead e lookbehind
- Refere-se em conjunto a
(?=...)(lookahead positivo),(?!...)(lookahead negativo),(?<=...)(lookbehind positivo) e(?<!...)(lookbehind negativo). Eles permitem exigir que um determinado texto exista nas proximidades sem incluir esse texto na correspondência em si. - Classe de caracteres
- Um conjunto de caracteres entre colchetes, como
[abc]ou[a-z0-9], que corresponde a qualquer caractere individual contido nele. Colocar^logo após o colchete de abertura, como em[^abc], nega o conjunto, significando "qualquer caractere exceto estes". - Âncora
- Um elemento que corresponde a uma posição, e não a um caractere real.
^ancora no início da string (ou de cada linha com a flag m),$no final, e\bem um limite de palavra. - Flag
- Uma opção que muda a forma como o padrão inteiro é interpretado. Esta ferramenta suporta as cinco flags do JavaScript: g (encontra todas as correspondências), i (ignora maiúsculas/minúsculas), m (multilinha), s (permite que o ponto corresponda a quebras de linha) e u (tratamento correto de Unicode).
Perguntas frequentes
[abc], \d, +, * etc.) é, em grande parte, compartilhada, mas a sintaxe de grupos nomeados, o suporte a lookahead/lookbehind e as flags disponíveis variam sutilmente entre as linguagens. Esta ferramenta segue a especificação RegExp do JavaScript, portanto não garante comportamento idêntico em outras linguagens.*, +, ?) sem nada antes dele, ou uma classe de caracteres inválida. A mensagem de erro costuma dar uma dica, então verifique o balanceamento dos parênteses e o escape de caracteres especiais (como \. ou \().
Curiosidade — O que acontece dentro de um mecanismo de expressões regulares
As expressões regulares remontam à teoria das "linguagens regulares" proposta pelo matemático Stephen Kleene na década de 1950. Ferramentas Unix pioneiras, como o editor de texto ed e o comando grep (abreviação de "globally search a Regular Expression and Print"), adotaram essa teoria como implementação prática, o que explica a rápida disseminação do conceito nas ferramentas de processamento de texto. O próprio nome "grep" vem de uma operação de expressão regular, algo bastante simbólico.
O motor RegExp do JavaScript realiza a correspondência internamente usando uma estratégia chamada backtracking: testa cada elemento do padrão em ordem e, se uma parte posterior falhar, recua e tenta outra alternativa. Essa flexibilidade tem um custo: padrões como (a+)+b combinados com uma string longa que não corresponde podem fazer o número de tentativas crescer exponencialmente, fenômeno conhecido como "backtracking catastrófico", capaz de travar um navegador ou servidor. Sempre teste padrões complexos com diversas entradas antes de usá-los em produção.
Um objeto de expressão regular com a flag global (g) mantém internamente um cursor chamado lastIndex, e cada chamada a exec() retoma a busca a partir dessa posição. Reutilizar o mesmo objeto de expressão regular em buscas não relacionadas pode deixar esse cursor em um estado inesperado, por isso esta ferramenta cria uma nova instância de RegExp a cada vez, evitando que esse estado residual seja carregado.
Grupos de captura nomeados ((?<nome>...)) foram adicionados no ECMAScript 2018 e são um recurso relativamente novo. Referenciar um grupo pelo nome em vez do número melhora muito a legibilidade de padrões complexos — especialmente útil ao analisar datas, onde saber o que cada grupo representa é importante.