Testador de Regex
Digite um padrão, escolha as flags e cole o texto de teste: o testador de regex mostra cada correspondência com seu índice, o conteúdo dos grupos de captura numerados e nomeados e explica cada parte do padrão em português claro. A busca usa o motor JavaScript do seu navegador (ECMAScript).
Fonte: ECMA-262 § 22.2, ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects. Atualizado em: .
Como o cálculo é feito
Este testador de regex usa o dialeto JavaScript de expressões regulares, definido pelo padrão ECMA-262 e implementado pelo seu navegador. Um padrão que funciona aqui funciona exatamente igual em String.prototype.match, matchAll, replace e RegExp.prototype.test – no Chrome, Firefox, Safari e Node.js.
Como testar uma regex
- Digite o padrão sem as barras em volta, por exemplo
\d+. - Marque as flags necessárias (g para todas as correspondências, i para ignorar maiúsculas e minúsculas…).
- Cole o texto de teste e veja as correspondências, os grupos e a explicação do padrão.
Exemplo: o padrão \d{4} com a flag g encontra 2 correspondências em “Nasceu em 1990, mudou-se em 2015”: 1990 na posição 10 e 2015 na posição 28 (as posições começam em 0).
Como ler o resultado
- Correspondências: cada correspondência com seu índice (posição do caractere a partir de zero, contada em unidades de código UTF-16 como faz o JavaScript – um emoji conta como 2) e comprimento. Quebras de linha aparecem como ↵, tabulações como ⇥.
- Grupos por correspondência: o que cada par de parênteses capturou – grupos numerados
( )e grupos nomeados(?<nome> ). “Não participou” significa que o grupo está numa alternativa que não foi usada. Com a flagdvocê também vê a posição de cada grupo. - Padrão explicado: cada elemento em português claro; linhas recuadas (›) ficam dentro de um grupo.
As flags
g encontra todas as correspondências em vez de só a primeira, i ignora maiúsculas e minúsculas, m faz ^ e $ valerem por linha, s deixa o ponto casar quebras de linha. u trata emojis e outros caracteres fora do Plano Multilíngue Básico como um único caractere e ativa propriedades Unicode como \p{L} (qualquer letra, inclusive ç, ã ou é). v é a versão mais nova de u, com operações de conjunto como [\p{L}--[a-z]]; u e v não podem ser combinadas. y (“sticky”) só encontra correspondências que se seguem sem lacunas.
Proteção contra loops infinitos e travamentos
Padrões como a* ou \b podem gerar correspondências vazias. Assim como o próprio JavaScript, o testador avança então um caractere (um code point inteiro com u/v), de modo que não há loop infinito. São buscadas no máximo 1.000 correspondências.
O perigo maior é o backtracking catastrófico (ReDoS): quantificadores aninhados como (a+)+$ testam um número exponencial de combinações num texto que não corresponde – 30 caracteres podem ocupar o motor por minutos. Por isso a busca roda numa thread separada em segundo plano e é interrompida após 2 segundos; a página continua respondendo. Evite esses padrões também no seu próprio código, principalmente com entradas de usuários.
Diferenças em relação a outros dialetos de regex
PCRE (PHP), Python, Java e .NET diferem nos detalhes: o JavaScript não tem quantificadores possessivos (a++), nem grupos atômicos, nem as âncoras \A e \Z; \w cobre apenas A–Z, a–z, 0–9 e o sublinhado – para letras acentuadas, use \p{L} com a flag u.
Seu texto de teste não é enviado, não é armazenado e não entra no link – só o padrão e as flags.
Mais ferramentas para desenvolvedores: valide JSON com o validador de JSON, XML e CSV com o validador XML e CSV e codifique texto com o codificador Base64.
Perguntas frequentes
Como testar uma expressão regular?
Digite o padrão sem barras no campo de cima, marque as flags de que precisa e cole o seu texto. Todas as correspondências são destacadas no texto na hora e listadas com o índice; logo abaixo você vê o que cada grupo capturou.
Por que \w não casa letras acentuadas?
No JavaScript, \w representa apenas A–Z, a–z, 0–9 e _. Para letras de qualquer idioma, use \p{L} com a flag u, por exemplo [\p{L}\d_]+ para uma palavra como “ação”.
Qual a diferença entre guloso e preguiçoso?
Quantificadores gulosos (*, +, {2,}) pegam o máximo de texto possível; os preguiçosos, com um ponto de interrogação no final (*?, +?), o mínimo possível. Em “<b>x</b>”, <.+> casa o texto inteiro e <.+?> só “<b>”.
Como dar nome a um grupo de captura?
Use (?<nome>…). No código você lê o valor com match.groups.nome, numa string de substituição com $<nome> e dentro do padrão com a retrorreferência \k<nome>.
Por que minha busca foi interrompida?
Ela levou mais de 2 segundos – geralmente por causa de backtracking catastrófico com quantificadores aninhados como (\w+)*. Simplifique o padrão: não aninhe quantificadores, deixe as alternativas sem ambiguidade e ancore com ^ e $.
O resultado também vale para PHP ou Python?
Para padrões simples, geralmente sim, mas a garantia é só para JavaScript. PHP (PCRE) e Python aceitam sintaxe extra, como quantificadores possessivos ou \A, e o Python tradicionalmente escreve grupos nomeados como (?P<nome>…).
Fontes e base legal
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Última atualização: · Princípios editoriais
Ferramentas relacionadas
- Formatador, validador e minificador de JSONValide JSON pela RFC 8259 com linha, coluna e explicação clara do erro. Formate ou minifique, ordene as chaves e copie. Tudo roda no seu navegador.
- Validador de XML e CSV onlineVerifique se o XML está bem formado e valide CSV pela RFC 4180: erros com linha e coluna, separador detectado e prévia da tabela. Roda no navegador.
- Codificar e Decodificar Base64Codifique e decodifique Base64 e Base64url com UTF-8 correto, além de URL encode/decode (codificação por porcentagem). Erros claros, tudo no navegador.
- Gerador de Hash: SHA-256, SHA-512, SHA-1, MD5Calcule hashes SHA-256, SHA-384, SHA-512, SHA-1 e MD5 de textos ou arquivos e verifique checksums – no seu navegador, sem upload, grátis.
- Validar a sintaxe de endereços de emailConfira um ou vários endereços de e-mail conforme as RFC 5321/5322: tamanhos, domínio, domínios com acento (Punycode). No navegador, sem envio.
- Qual é o meu endereço IP?Mostra na hora seu endereço IP público, detecta se é IPv4 ou IPv6 e explica a diferença. Grátis – seu IP não é armazenado.
- Extrair emails de um textoExtrair emails de um texto: encontre também links, hashtags, números, datas e endereços IP, sem duplicados. No navegador, sem upload.
- Gerador de robots.txtGerador de robots.txt: escolha um modelo, bloqueie ou permita caminhos, adicione o sitemap e exclua rastreadores de IA – arquivo pronto para copiar e conferido.
- Validador robots.txt com checagem do sitemapValidador robots.txt online: uma URL está bloqueada para Googlebot, Bingbot ou robôs de IA? Mostra a regra decisiva, erros de sintaxe e confere o sitemap.