O que faz um testador de regex
Uma expressão regular, ou regex, é uma pequena linguagem de padrões para encontrar texto. \d{4} significa “quatro dígitos seguidos”. [\w.+-]+@ significa “um ou mais caracteres de palavra, pontos, sinais de mais ou hifens, seguidos de um @”. As regex são usadas em localizar e substituir nos editores de código, na validação de formulários, na análise de logs e na limpeza de dados.
É fácil errar um padrão por pouco. Um testador permite experimentar um padrão em um texto de exemplo real e ver exatamente o que ele pega antes de colocá-lo em um script. Este mostra as ocorrências enquanto você digita, lista todos os grupos de captura e mostra uma prévia da substituição.
Como usar o testador de regex
- Digite o seu padrão em Expressão regular. Não coloque as barras. A ferramenta as mostra para você, com as flags ativas depois da barra de fechamento.
- Ligue ou desligue as flags com os botões g, i, m, s, u e y.
- Cole ou digite um texto de exemplo em Texto de teste.
- Leia o resultado em Ocorrências. Cada ocorrência fica destacada e o contador mostra quantas foram encontradas.
- Confira Detalhes e grupos para ver a posição de cada ocorrência e o texto capturado por cada grupo.
- Para testar um localizar e substituir, digite em Substituir por. O texto alterado aparece em Resultado, pronto para copiar.
Não sabe por onde começar? Escolha um item em Padrões comuns. Há padrões para endereços de e-mail, endereços web, datas, endereços IPv4, cores em hexadecimal, telefones, números e espaços duplos.
As flags
| Flag | Nome | O que muda |
|---|---|---|
| g | global | Encontra todas as ocorrências, e não só a primeira |
| i | ignorar maiúsculas | hello também encontra Hello e HELLO |
| m | multilinha | ^ e $ valem no começo e no fim de cada linha |
| s | dot all | O . também pega uma quebra de linha |
| u | unicode | Lê um emoji como um caractere e permite as classes \p{...} |
| y | sticky | Cada ocorrência precisa começar exatamente onde terminou a anterior |
Exemplos
Estes resultados saem dos padrões rodando nesta ferramenta.
| Padrão | Flags | Texto | Ocorrências |
|---|---|---|---|
\d+ |
nenhuma | a1 b22 c333 |
1 |
\d+ |
g | a1 b22 c333 |
1, 22, 333 |
hello |
gi | Hello hello HELLO |
Hello, hello, HELLO |
^\w+ |
gm | duas linhas: one two e three four |
one, three |
a.b |
g | a, quebra de linha, b |
nenhuma ocorrência |
a.b |
gs | a, quebra de linha, b |
uma ocorrência |
\w+ |
g | ação coração |
a, o, cora, o |
\p{L}+ |
gu | ação coração |
ação, coração |
A página abre com um exemplo de datas. O padrão (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) encontra três datas no texto de exemplo: 2026-10-31, 2024-01-15 e 2026-11-02. A substituição $<day>/$<month>/$<year> transforma a primeira em 31/10/2026, que é o formato de data usado no Brasil.
Uma substituição também ajuda na limpeza. O padrão \s{2,} com um único espaço como substituição transforma too many spaces em too many spaces.
Atenção aos acentos
As duas últimas linhas da tabela mostram um tropeço comum com textos em português. No JavaScript, \w só reconhece as letras de A a Z sem acento, os dígitos e o sublinhado, mesmo com a flag u. Por isso \w+ corta “ação” em “a” e “o”. O mesmo vale para \b, o limite de palavra, que trata o “ç” e o “ã” como se não fossem letras. Para pegar palavras com acento, ligue a flag u e use \p{L} (qualquer letra) no lugar de \w, ou liste as letras à mão, como em [A-Za-zÀ-ÿ]. Outras linguagens se comportam de outro jeito: no Python 3, por exemplo, \w já reconhece letras acentuadas.
Como funciona
O testador monta um RegExp do JavaScript com o seu padrão e as flags, e o executa sobre o texto de teste. Com a flag g, ele continua procurando até o fim. Ele também avança depois das ocorrências vazias, para que um padrão como x* não fique em um laço infinito.
O texto é escapado antes de ser destacado. Qualquer HTML ou script no seu texto de exemplo aparece como caracteres simples e nunca é executado.
A busca acontece em um Web Worker, uma thread em segundo plano. Se um padrão rodar por mais de 1 segundo, o worker é interrompido e um novo é iniciado. Você vê uma mensagem em vez de uma aba travada.
Se um padrão for inválido, você vê “Padrão inválido:” seguido da mensagem de erro do navegador, que normalmente vem em inglês. Por exemplo, um ( sozinho dá “Unterminated group”.
Dicas e limites
- Cuidado com repetições aninhadas. Padrões como
(a+)+$ou(\w+\s?)*$podem demorar uma enormidade em um texto que quase bate. Isso se chama backtracking catastrófico. Faça cada parte pegar algo específico e evite uma repetição dentro de outra. - Escape os caracteres especiais. Para pegar um ponto de verdade, escreva
\.. O mesmo vale para? * + ( ) [ ] { } ^ $ |e para a própria barra invertida. - Ancore os padrões de validação. Em um campo de formulário, envolva o padrão com
^e$, para que o valor inteiro precise bater, e não só uma parte dele. - Regex não é um parser completo. Ela serve bem para encontrar e-mails ou datas em um texto. Não é um jeito confiável de analisar HTML ou de conferir se um endereço de e-mail existe de verdade.
- Resultados muito grandes têm limite. A ferramenta lista até 5.000 ocorrências e mostra as 300 primeiras linhas na tabela de detalhes.
Outras formas de testar uma regex
Na linha de comando, grep -oE mostra cada ocorrência em uma linha:
echo 'Call 555-010-9999 on 2026-10-31' | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
Isso mostra 2026-10-31. Em Python, re.findall(r'\d{4}-\d{2}-\d{2}', 'from 2026-10-31 to 2024-01-15') devolve ['2026-10-31', '2024-01-15']. Em JavaScript, use text.match(/pattern/g) ou text.matchAll() para os grupos.
Ferramentas relacionadas
Para transformar títulos em endereços da web limpos, use o gerador de slug. Para deixar um texto seguro dentro de um link, use a ferramenta de codificar e decodificar URL.