Testador de Expressões Regulares
Teste expressões regulares ao vivo: correspondências, grupos de captura e substituição, com 15 padrões prontos.
Testador de expressões regulares - testar regex online em tempo real
Escrever uma expressão regular é adivinhação até você conseguir ver o que ela captura. Este testador de regex gratuito roda o seu padrão contra o seu próprio texto de exemplo enquanto você digita e destaca cada correspondência, então o erro aparece em segundos em vez de virar uma validação quebrada em produção.
Digite o padrão em um campo, as flags no seguinte e cole abaixo o texto que quer testar. As correspondências se atualizam na hora e um padrão inválido é sinalizado imediatamente, em vez de falhar em silêncio.
Para que serve de verdade um testador de regex
A maioria dos bugs de regex não é exótica: o padrão captura demais, captura de menos, ou funciona no único exemplo que você tinha em mente e falha no segundo. Um testador transforma esse comportamento invisível em algo observável: cole cinco entradas realistas, inclusive as chatas, e veja quais acendem. É também a forma mais rápida de aprender a sintaxe, porque você muda um caractere e vê a consequência na hora.
Como usar este testador
- Digite o padrão sem as barras que o cercam, por exemplo
[a-z]+\d{2,4}. - Acrescente as flags necessárias no campo próprio, como
gipara uma busca global que ignora maiúsculas. - Cole um texto de exemplo realista em Texto de teste, incluindo os casos limite que devem falhar.
- Leia as correspondências destacadas no texto e listadas em Correspondências e grupos, ajuste o padrão e repita até que só o texto certo fique marcado.
- Confira os grupos de captura mostrados com cada correspondência e digite uma substituição com
$1ou$<nome>em Substituir por; o texto reescrito aparece em Resultado da substituição.
Não sabe por onde começar? O menu Biblioteca de padrões carrega um de 15 padrões comuns junto com as flags, de endereços de e-mail, URLs, endereços IPv4, UUIDs e cores hexadecimais a links Markdown, palavras repetidas e espaços sobrando no início ou no fim da linha. Se a caixa de teste estiver vazia, ou ainda tiver um exemplo anterior, o padrão traz um texto de exemplo; se você já colou o seu próprio texto, ele fica, e o padrão roda sobre os seus dados reais. Trate esses padrões como ponto de partida, não como validadores: o de e-mail, por exemplo, é prático de propósito e não aceita todo endereço que a norma permite. O guia de regex para e-mail e o guia de números, telefones e endereços IP mostram onde esses padrões param.
Grupos de captura e localizar e substituir
Coloque parte do padrão entre parênteses para capturá-la: este testador mostra cada grupo ao lado da sua correspondência - numerado como Grupo 1, Grupo 2 e assim por diante, além de qualquer grupo nomeado escrito (?<nome>...). É assim que se extrai o ano, um código de área ou uma extensão de arquivo de uma correspondência, em vez de apenas confirmar que houve correspondência. Digite algo no campo Substituir por para reescrever as correspondências na hora: $1 insere o primeiro grupo, $<nome> um grupo nomeado, $& a correspondência inteira e $$ um cifrão literal.
As flags e o que elas mudam
| Flag | Efeito | Quando usar |
|---|---|---|
g | Encontra todas as correspondências, não só a primeira | Substituir ou contar todas as ocorrências |
i | Ignora maiúsculas e minúsculas | Entrada de usuário, e-mails, tags |
m | ^ e $ valem em cada linha | Trabalhar linha a linha em um log ou uma lista |
s | . também casa com quebra de linha | Capturar um bloco que ocupa várias linhas |
u | Modo Unicode completo | Emojis, acentos e alfabetos não latinos |
y | Sticky: casa apenas na posição atual | Escrever um tokenizador ou parser |
Os símbolos que você mais vai usar
| Símbolo | Significado |
|---|---|
\d \w \s | Um dígito, um caractere de palavra, um espaço em branco |
. | Qualquer caractere exceto quebra de linha, se a flag s não estiver ativa |
^ $ | Início e fim da string, ou de cada linha com m |
* + ? | Zero ou mais, um ou mais, zero ou um |
{2,5} | Entre duas e cinco repetições |
[abc] [^abc] | Qualquer um desses caracteres, ou qualquer coisa menos esses |
(...) (?:...) | Grupo de captura e grupo sem captura |
\b | Fronteira de palavra: a solução para casar apenas palavras inteiras |
Para que as pessoas escrevem regex
- Validar e-mails, telefones, CEPs e documentos em formulários.
- Extrair endereços IP, códigos de status, carimbos de tempo ou IDs de usuário de linhas de log.
- Buscar e substituir em todo um projeto e fazer refatorações que o editor não resolve literalmente.
- Regras de rota e de redirecionamento em um framework, servidor web ou CDN.
- Limpar dados importados ou raspados antes que cheguem ao banco.
- Aplicar regras de composição de senha no lado do cliente.
Os erros que mais custam tempo
- Quantificadores gulosos.
.*vai até o fim da linha. Use.*?ou uma classe negada como[^"]*para parar antes. - Metacaracteres sem escape. Ponto, mais, interrogação ou barra literais precisam de uma barra invertida antes.
- Esquecer a flag
ge depois estranhar por que só a primeira ocorrência mudou. - Retrocesso catastrófico. Quantificadores aninhados como
(a+)+podem travar com uma entrada longa que não casa. - Padrões de e-mail rígidos demais. Endereços reais têm sinal de mais, pontos e caracteres internacionais: seja permissivo e confirme por e-mail.
- Tentar analisar HTML. Para estruturas aninhadas use um parser: regex não consegue contar tags de abertura e fechamento.
Nota sobre os dialetos de regex
Este testador usa o motor JavaScript do seu navegador, que é o alvo certo se o padrão for rodar em uma página web, no Node.js ou em um schema JSON. PCRE, Python, Go e PostgreSQL divergem em detalhes como suporte a lookbehind, sintaxe de grupos nomeados e propriedades Unicode. Teste o padrão no ambiente em que ele realmente vai rodar antes de confiar nele.
Nada do que você cola é enviado
O padrão e o texto de teste ficam no navegador. Isso importa porque dados de teste costumam ser dados reais - trechos de log, registros de clientes, e-mails de exemplo - e nada disso deveria terminar no servidor de outra pessoa.
O mesmo padrão em Python, Java, C#, PHP e Go
Quando um padrão funciona aqui, quase sempre passa para outra linguagem mudando só o invólucro. O que realmente incomoda é como as barras invertidas são escapadas nos literais de string e quais recursos cada motor tem.
| Linguagem | Testar uma correspondência | Atenção a |
|---|---|---|
| Python | re.search(r'\d{4}', text) | Use strings raw; grupos nomeados se escrevem (?P<nome>...) |
| Java | Pattern.compile("\\d{4}").matcher(text).find() | Dobre as barras invertidas; matches() exige que a string inteira corresponda |
| C# / .NET | Regex.IsMatch(text, @"\d{4}") | Strings verbatim com @ evitam o escape duplo |
| PHP | preg_match('/\d{4}/', $text) | PCRE: delimitadores são obrigatórios; adicione u para UTF-8 |
| Go | regexp.MustCompile(`\d{4}`).MatchString(text) | Motor RE2: sem lookbehind nem retrorreferências |
Ferramentas relacionadas
Padrões quase sempre atuam sobre texto vindo de outro lugar. Formate um payload com o formatador JSON, decodifique um valor escapado com o decodificador de URL, leia um token com o decodificador JWT e converta os valores epoch encontrados com o conversor de timestamp.