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).

Digite sem as barras ao redor, por exemplo \d+ em vez de /\d+/. O padrão faz parte do link e pode ser compartilhado – o texto de teste, não.
Seus dados ficam salvos só neste navegador.

O texto a ser pesquisado. Ele fica no seu navegador e não entra no link.

Seu texto fica no seu navegador: não é enviado, não é salvo e não aparece no endereço da página.

Resultado

Resultado
2 correspondências
Correspondências
NºÍndiceComprimentoCorrespondência
119102026-09-27
243102026-10-15
Grupos por correspondência
NºGrupoNomeValor
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
Padrão explicado
ElementoSignificado
(?<jahr>início do grupo 1, chamado “jahr”
› \dum dígito de 0 a 9
› {4}o item anterior exatamente 4 vezes
)fim do grupo
-o texto literal “-”
(?<monat>início do grupo 2, chamado “monat”
› \dum dígito de 0 a 9
› {2}o item anterior exatamente 2 vezes
)fim do grupo
-o texto literal “-”
(?<tag>início do grupo 3, chamado “tag”
› \dum dígito de 0 a 9
› {2}o item anterior exatamente 2 vezes
)fim do grupo
Como literal JavaScript
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})/g

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 ler o resultado

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.

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

Última atualização:

Ferramentas relacionadas