tigtools

Testador de regex

Digite um padrão e um texto para ver todas as correspondências destacadas, com suas posições e grupos de captura. Usa o mecanismo de regex JavaScript do seu navegador.

Executado no seu navegador Sem cadastro

Flags

Use $1, $2… para grupos numerados, $<name> para grupos nomeados, $& para a correspondência inteira e $$ para um cifrão.

Como usar

  1. Digite uma expressão regular no campo Padrão, sem as barras ao redor.
  2. Marque as flags necessárias. g (global) encontra todas as correspondências, em vez de apenas a primeira.
  3. Cole o texto a ser pesquisado. As correspondências são destacadas e listadas com seus índices e grupos de captura.
  4. Se quiser, digite uma substituição, como $2-$1, para visualizar o resultado de String.replace.

Como funciona

O testador executa seu padrão com o objeto RegExp integrado do navegador. Portanto, os resultados são exatamente os que o código JavaScript (ECMAScript) produziria nesse navegador. Outras linguagens usam diferentes variantes de regex: PCRE (PHP), o módulo re do Python, Java e .NET oferecem recursos que o JavaScript não tem, como quantificadores possessivos (a++), grupos atômicos ((?>…)), modificadores inline como (?i) e recursão. Também há diferenças em detalhes, como as âncoras \A e \Z. Teste o padrão na linguagem em que pretende usá-lo. Lookbehind ((?<=…)), grupos nomeados ((?<name>…)) e escapes de propriedade Unicode (\p{L} com a flag u) funcionam em todos os navegadores atuais.

Sem a flag g ou y, apenas a primeira correspondência é encontrada, como em RegExp.exec. Correspondências de comprimento zero, como as de ^ ou \b, são listadas, mas não destacadas; depois de uma delas, a busca avança um caractere (um ponto de código com a flag u), como em String.matchAll. Os grupos de captura são exibidos por número e, quando definidos, por nome. Um grupo que não participou da correspondência é marcado como sem valor, o que é diferente de uma correspondência vazia.

Alguns padrões, como (a+)+$ em uma linha longa sem correspondência, levam tempo exponencial para falhar (retrocesso catastrófico). Para reduzir esse risco, a busca começa um instante depois que você para de digitar, pesquisa apenas os primeiros 100.000 caracteres do texto e coleta no máximo 1.000 correspondências. Ainda assim, um padrão problemático pode deixar a aba sem responder por algum tempo. Se isso acontecer, simplifique o padrão ou encurte o texto.

Exemplos

Extrair datas

O padrão (\d{4})-(\d{2})-(\d{2}) com a flag g ativada encontra duas correspondências em “Vencimento 2026-03-15, pago em 2026-04-02”. O grupo 1 é o ano; a substituição $3.$2.$1 transforma o texto em “Vencimento 15.03.2026, pago em 02.04.2026”.

Grupos nomeados para um código mais legível

(?<key>\w+)=(?<value>[^&]*) na string de consulta a=1&b=two lista key e value para cada par, correspondendo ao que match.groups.key e match.groups.value retornam em JavaScript.

Busca sem diferenciar maiúsculas de minúsculas em várias linhas

^error:.* com as flags g, i e m encontra todas as linhas de um registro que começam com Error:, ERROR: ou error:, pois m faz ^ corresponder ao início de cada linha.

Perguntas frequentes

Minha regex vai funcionar da mesma forma em Python, PHP ou Java?

Não necessariamente. Esta ferramenta usa o mecanismo do JavaScript. A sintaxe básica é compartilhada, mas recursos como quantificadores possessivos, grupos atômicos, flags inline como (?i) e algumas sequências de escape existem apenas em outras variantes; alguns também se comportam de maneira diferente. Sempre teste na linguagem de destino.

Por que só uma correspondência foi encontrada?

A flag g (global) está desativada. Sem ela, o JavaScript retorna apenas a primeira correspondência. Marque g para encontrar todas.

Devo digitar as barras ao redor do padrão?

Não. Digite apenas o padrão, por exemplo, \d+ em vez de /\d+/g, e escolha as flags pelas caixas de seleção. A forma de literal do JavaScript é exibida abaixo dos resultados para você copiar para o código.

Por que a página ficou lenta com meu padrão?

Quantificadores aninhados, como (a+)+ ou (.*)*, podem fazer o mecanismo testar um número exponencial de caminhos quando não há correspondência. Torne o padrão mais específico, por exemplo, substituindo .* por [^,]*, ou use âncoras. O testador limita o texto a 100.000 caracteres para reduzir o impacto.

Privacidade

Seu padrão e texto são processados apenas no navegador, pelo mecanismo JavaScript. Nada é enviado, armazenado ou incluído em análises.