Como testar padrões regex
Teste regex no seu navegador. Insira padrão e texto de teste, alterne flags, inspecione correspondências e grupos, e pré-visualize substituições localmente.
As expressões regulares são poderosas precisamente por serem compactas, mas essa mesma compacidade torna fácil errar de forma sutil. Um padrão que parece correto pode corresponder a demais, a de menos, ou a nada, e a única forma fiável de o saber é rodá-lo contra texto real. O testador de regex executa uma expressão regular de JavaScript no seu navegador, mostra cada correspondência com os respetivos grupos de captura e pré-visualiza substituições — tudo sem enviar o seu texto.
TL;DR
Pode desenvolver e verificar uma regex contra entrada real, inteiramente em local.
- Vê correspondências e grupos — cada correspondência lista o texto, o intervalo de índices e os grupos de captura (incluindo grupos com nome).
- Pré-visualize substituições — escreva uma substituição e veja o resultado alterado no instante, com aviso quando nada muda.
- As sete flags do JS — alterne g, i, m, s, u, y ou d e observe o resultado atualizar-se.
O que é regex
Uma expressão regular é um padrão que descreve um conjunto de cadeias. É a ferramenta padrão para procurar, validar, extrair e substituir texto, e está integrada em todas as linguagens de programação. Em JavaScript, uma regex é um objeto RegExp, que você escreve como literal (/\d+/g) ou construindo um (new RegExp("\\d+", "g")).
Os trabalhos habituais da regex:
- Validação — “esta cadeia parece um email, uma data, um número de telefone?”
- Extração — “retire cada URL, cada número, cada frase entre aspas deste texto.”
- Substituição — “troque cada marcador por um valor real” ou “normalize todos os espaços.”
Como a regex é breve e simbólica, um único caractere mal colocado muda o significado. Testar contra entrada representativa é como passa de “acho que funciona” para “funciona”.
As partes de um padrão regex
Um padrão constrói-se com alguns blocos. Conhecê-los pelo nome torna os padrões legíveis:
- Literais — caracteres ordinários que correspondem a si próprios.
catcorresponde às letrasc,a,tpor ordem. - Classes de caracteres — um conjunto de caracteres permitidos entre parênteses retos.
[a-z]corresponde a qualquer letra minúscula;\dé a abreviatura de[0-9],\wde caracteres de palavra,.de (quase) qualquer caractere. - Quantificadores — quantas vezes o anterior se repete.
*é zero ou mais,+um ou mais,?zero ou um, e{n}ou{n,m}uma contagem exata ou limitada. - Âncoras — posição, não caracteres.
^corresponde ao início da cadeia (ou linha, com a flagm),$ao fim. - Grupos — os parênteses
(...)capturam parte da correspondência para a referenciar depois. Os grupos com nome(?<year>\d{4})dão um nome legível à captura. - Alternação —
cat|dogcorresponde acatou adog.
Compor estes blocos é como se escrevem os padrões, e vê-los aplicados ao texto é como se verificam.
Flags
As flags modificam o comportamento de todo o padrão e acrescentam-se após a barra de fecho (por exemplo /x/gi). O testador expõe as sete flags de JavaScript como interruptores:
- g (Global) — procura todas as correspondências, não só a primeira. Sem
g, a pesquisa para após o primeiro acerto. - i (Ignorar maiúsculas) — torna a correspondência insensível a maiúsculas, de modo que
[a-z]também encaixa com maiúsculas. - m (Multilinha) — deixa
^e$corresponder ao início e ao fim de cada linha, não só de toda a cadeia. - s (Ponto tudo) — deixa
.corresponder também a mudanças de linha, o que normalmente não faz. - u (Unicode) — trata o padrão como pontos de código Unicode, essencial para emojis e alfabetos não ASCII.
- y (Sticky) — corresponde só em
lastIndex, ancorando cada pesquisa numa posição exata. - d (Índices) — expõe os índices de início e fim de cada grupo de captura, além dos respetivos valores.
O dia a dia costuma precisar só de g e i; as restantes resolvem casos concretos com texto multilinha, Unicode ou análise avançada.
Passo a passo: testar um padrão
Abra o testador de regex e siga este fluxo.
- Insira o seu Padrão no campo Padrao. Escreva-o sem as barras envolventes e sem flags — a ferramenta monta o literal por si.
- Cole o seu Texto de teste no campo de texto. É o texto onde o seu padrão procura.
- Alterne as Flags de que precisa — g, i, m, s, u, y ou d. O resultado atualiza-se ao alternar.
- Consulte o separador Matches. Cada correspondência mostra o texto reconhecido, o intervalo de índices e os grupos de captura eventuais (os grupos com nome aparecem com o nome). Se nada encaixa, verá “Sem matches”.
- Mude para o separador Substituir. Escreva uma Substituicao (pode referenciar grupos como
$1ou$<name>). A ferramenta rodatext.replace(regex, replacement)e mostra o resultado alterado, ou avisa quando nada muda. - Copie ou redefina. Use Copiar regex para o literal, Copiar resumo para a lista de correspondências, Copiar substituicao para o resultado, ou Redefinir para limpar tudo.
Se não souber por onde começar, o menu Amostra carrega um padrão e texto prontos para Data, Email, URL ou Palavras, para ver logo um exemplo funcional.
Limites e notas específicas do JavaScript
Algumas restrições honestas, para que a ferramenta seja o que espera:
- Só o motor JavaScript. A ferramenta roda
new RegExp(pattern, flags)no seu navegador, pelo que reflete o motor regex de JavaScript — não PCRE, Python nem Java. Padrões escritos para outros motores podem comportar-se de forma diferente, e a ferramenta não “explica” um padrão por si. - Tamanhos limitados. O padrão é limitado a 500 caracteres e o texto a 20.000. Se exceder, a ferramenta assinala o problema em vez de rodar.
- As correspondências limitam-se a 200. Quando um padrão encaixa mais de 200 vezes, a ferramenta mostra as primeiras 200 com o aviso “Mostrando os primeiros 200 matches.”. Para verificar chega; para contar entradas enormes, afine o padrão.
- O lookbehind varia com o motor e a idade. O lookbehind de JavaScript (
(?<=...)) é suportado em navegadores modernos, mas faltava em motores mais antigos e difere do PCRE. Se um lookbehind falhar, é normalmente por isso.
Perguntas frequentes
Suporta PCRE?
Não. A ferramenta usa o motor RegExp de JavaScript (new RegExp(pattern, flags)), que tem a sua própria sintaxe e conjunto de funcionalidades e não é compatível com PCRE. Funcionalidades exclusivas do PCRE — como padrões recursivos ou certas classes POSIX — não funcionam aqui. Escreva padrões para o motor JavaScript, ou converta padrões PCRE antes de os testar.
O que são grupos de captura?
Os parênteses num padrão ( ... ) criam um grupo de captura que memoriza a parte do texto que encaixou, para a referenciar depois — por número ($1, $2) numa substituição, ou por nome se escreveu um grupo com nome (?<name> ...). O separador Matches mostra o valor de cada grupo (e o nome, quando existe), e é assim que confirma que o padrão captura o que pretendia.
Como substituo texto?
Mude para o separador Substituir e escreva uma Substituicao. A ferramenta roda text.replace(regex, replacement) com as suas flags atuais e mostra o resultado; pode referenciar grupos com $1, $2, … ou grupos com nome com $<name>. Se a flag global g estiver desligada, só a primeira correspondência é substituída. Quando nada muda, a ferramenta diz-o claramente.
Porque só 200 correspondências?
Por segurança e velocidade. Um padrão pode corresponder milhares de vezes num documento grande, e mostrar todas abrandaria a página até quase parar. O limite de 200 chega para verificar que um padrão encaixa com o que pensa; se precisar da contagem completa, torne o padrão mais específico ou teste num excerto mais pequeno.

Comece com esta ferramenta
Começar agora