Pular para o conteúdo

Testador de regex JavaScript

Teste o padrão e confira correspondências ou substituições. A assistência de IA opcional envia descrição, padrão e flags à DeepSeek após sua confirmação.

Assistente de IA · opcional

Crie e depure uma regex a partir da intenção

Descreva a regra de correspondência ou analise o padrão atual. O texto de teste continua no navegador.

API da DeepSeek
1 · Objetivo
Padrão atual —
Dados enviados: Somente esta descrição, a regex atual e suas flags são enviadas à DeepSeek. O texto do testador nunca é incluído. Detalhes de privacidade
2 · Padrão sugerido
O padrão sugerido, a explicação e os testes sintéticos aparecerão aqui. Nada é enviado antes da sua confirmação.
Expressão regular

Como testar uma expressão regular de JavaScript

O testador executa um padrão sobre o texto de exemplo com o mesmo mecanismo que o seu navegador usa, então o que casa aqui também casa na sua aplicação. Além da lista de correspondências, você vê os sinalizadores ativos, os grupos de captura e uma prévia da substituição.

Os padrões são de JavaScript (ECMAScript), não de PCRE ou Python. Os dialetos se sobrepõem bastante, mas não completamente, e essa é a razão mais comum de um padrão que funciona em outro lugar falhar aqui. Padrões prontos para e-mail, URL, IPv4, UUID, data, hora, cor hexadecimal e números estão a um clique.

  1. Cole o texto que você quer analisar no campo de texto de exemplo.
  2. Digite o padrão sem delimitadores nem sinalizadores — a página adiciona os dela — ou escolha um padrão rápido e edite.
  3. Marque os sinalizadores necessários: busca global, ignorar maiúsculas e minúsculas, multilinha, ponto inclui quebras de linha ou modo Unicode.
  4. Leia a lista de correspondências: cada entrada mostra o texto encontrado, a posição (a partir de 0) e os grupos de captura, que é como se descobre por que um grupo sai vazio.
  5. Digite o texto de substituição para pré-visualizar o resultado antes de levar o padrão para o código; sem a busca global, só a primeira ocorrência é substituída.

Detalhes das expressões regulares de JavaScript

Que dialeto de expressão regular é este

É ECMAScript. Grupos nomeados (?<nome>...), asserções de retrospecção (?<=...) e (?<!...) e classes Unicode como \p{Letter} com o sinalizador u funcionam nos navegadores atuais. Quantificadores possessivos, grupos atômicos, recursão, as âncoras \A e \Z e modificadores embutidos como (?i) não fazem parte da linguagem.

Diferenças assim quebram padrões escritos para Python, PHP ou Java: (?P<nome>...) vira (?<nome>...), \Z é substituído por $ e os modificadores saem do padrão para as caixas de seleção. Com essas três mudanças a maioria dos casos reais se resolve.

O que cada sinalizador muda

A busca global devolve todas as correspondências em vez de parar na primeira, e é ela que faz uma substituição valer para todo o texto, não só para o primeiro acerto. Ignorar maiúsculas e minúsculas faz as letras casarem em qualquer caixa. Multilinha permite que ^ e $ casem nas quebras de linha internas, não apenas no início e no fim da string.

Ponto inclui quebras de linha deixa um ponto consumir a quebra, o que é necessário para casar um bloco inteiro de texto. O modo Unicode passa a semântica de pontos de código: um ponto casa com o emoji inteiro, e não com metade dele, e habilita as classes \p{...}.

Correspondências, grupos e substituições

Os grupos de captura são numerados pela ordem de abertura dos parênteses; um grupo sem captura (?:...) não ocupa número, o que ajuda quando você só quer agrupar uma alternância. Grupos nomeados entram na substituição como $<nome>, bem mais legível que $3 quando o padrão cresce.

No texto de substituição, $1 a $99 inserem grupos capturados, $& insere a correspondência inteira e $$ insere um cifrão literal. Cuidado com quantificadores aninhados como (a+)+ sobre entradas longas que quase casam: eles podem explorar um número exponencial de caminhos e travar a página.

Dúvidas sobre correspondências e substituições

O texto que eu testo é enviado para algum servidor?

Não. As correspondências e as substituições são calculadas no seu navegador com o mecanismo de JavaScript, e os botões da ferramenta não fazem nenhuma requisição de rede. A única exceção é o painel de IA opcional: depois de marcar a caixa de consentimento, ele envia ao DeepSeek apenas a descrição que você escreve, o padrão atual e os sinalizadores, nunca o texto de exemplo.

Por que meu padrão funciona em Python ou PHP, mas falha aqui?

Porque o dialeto é diferente. Python escreve grupos nomeados como (?P<nome>...) e tem \Z; Java e PCRE têm quantificadores possessivos e grupos atômicos; PHP aceita modificadores como (?i). ECMAScript não tem nada disso, então o padrão precisa ser traduzido, não copiado.

Por que só a primeira ocorrência é substituída?

Porque a busca global está desmarcada. Sem esse sinalizador a substituição para no primeiro acerto, como acontece com String.prototype.replace quando o padrão não é global; para trocar o texto todo, marque Global.

O que exatamente cada sinalizador faz?

Global: todas as correspondências e todas as substituições, não só a primeira. Ignorar maiúsculas: as letras casam em qualquer caixa. Multilinha: ^ e $ também casam nas quebras de linha internas. Ponto inclui quebras: um ponto pode consumir a quebra. Unicode: semântica de pontos de código, um emoji conta como um caractere e as classes \p{...} ficam disponíveis.

Como leio as posições e os grupos da lista?

A posição é o índice onde a correspondência começa, contado a partir de 0. Os grupos de captura aparecem numerados ($1, $2...) e entre aspas, e um grupo nomeado aparece também com o nome. Se um grupo opcional não participa da correspondência, ele aparece vazio — exatamente o que se precisa para depurar o padrão.

O que posso escrever no campo de substituição?

$1 a $99 inserem o grupo correspondente, $& insere a correspondência inteira, $<nome> insere um grupo nomeado e $$ insere um cifrão literal. Lembre que, como no JavaScript, sem a caixa Global só a primeira correspondência é substituída.

Ferramentas recentes: