Pular para o conteúdo

Testador de Regex para Expressões Regulares JavaScript

Escreva um padrão, cole um texto e veja as correspondências acenderem enquanto você digita. Grupos de captura, flags e substituições aparecem na hora, e nada sai do seu navegador.

Flags

Usa o motor de regex JavaScript do seu navegador (ECMAScript), o mesmo do Node.js.

Correspondências no seu texto

Fale com joao.silva@example.com ou support@fileora.tools se precisar de ajuda. Inválido: user@localhost

Como testar uma expressão regular

  1. Digite o padrão no campo Expressão regular, sem as barras em volta. Um padrão de exemplo que encontra endereços de e-mail já vem carregado.
  2. Escolha as flags tocando em g, i, m, s, u ou y. As flags ativas aparecem depois da barra de fechamento.
  3. Cole o seu texto de teste em Texto de teste. Cada correspondência fica destacada em Correspondências no seu texto, com a contagem logo acima.
  4. Se quiser, adicione uma substituição, como $1 ou $<user>, para ver a prévia do texto depois de substituir.
  5. Confira a tabela Detalhes das correspondências com a posição de cada correspondência e o valor de cada grupo de captura.

Recursos

  • Destaque em tempo real das correspondências enquanto você digita.
  • As seis flags do JavaScript: global, ignorar maiúsculas/minúsculas, multilinha, ponto pega quebras de linha, Unicode e sticky.
  • Grupos de captura em uma tabela, com os grupos nomeados aparecendo com o próprio nome.
  • Prévia de substituição com suporte a $1, $<nome> e $&, e botão de copiar.
  • Contagem e posição das correspondências, com as primeiras 1.000 listadas.
  • Proteção contra padrões descontrolados: a avaliação roda em um Web Worker e é interrompida depois de 1,5 segundo.
  • Mensagens de erro claras do próprio motor quando o padrão é inválido, como um grupo não fechado.

Por que usar o testador de regex do Fileora

Dado de teste muitas vezes é dado de verdade: logs de servidor, exportações de clientes, listas de e-mail. O Fileora roda a expressão regular no seu navegador, então nada disso sai do seu aparelho. É grátis, não pede cadastro e os botões de flag são grandes o bastante para usar com conforto no celular.

Como o testador usa o mesmo motor do seu código JavaScript, não há surpresa na hora de copiar o padrão para o projeto.

Colinha de regex em JavaScript

  • . qualquer caractere, menos quebra de linha (qualquer um mesmo com a flag s)
  • \d, \w, \s um dígito, um caractere de palavra (letra sem acento, dígito ou sublinhado), um espaço em branco
  • \D, \W, \S o contrário de cada um dos anteriores
  • [abc], [^abc], [a-z] um caractere de um conjunto, fora de um conjunto ou em um intervalo
  • ^ e $ início e fim do texto, ou de cada linha com a flag m
  • \b uma fronteira de palavra
  • *, +, ? zero ou mais, um ou mais, zero ou um
  • {3}, {2,5} exatamente 3 vezes, ou entre 2 e 5 vezes
  • *?, +? versões preguiçosas, que pegam o mínimo possível
  • (abc) um grupo de captura; (?:abc) um grupo que não captura
  • (?<ano>\d{4}) um grupo nomeado, usado como $<ano> na substituição
  • a|b a ou b
  • (?=x), (?!x) seguido de x, não seguido de x
  • (?<=x), (?<!x) precedido de x, não precedido de x
  • \p{L} qualquer letra de qualquer alfabeto, com a flag u

Acentos e padrões brasileiros

Um detalhe que pega muita gente: em JavaScript, \w só reconhece letras sem acento, então \w+ corta a palavra "ação" em pedaços. Para pegar palavras em português inteiras, use [\p{L}\p{N}_]+ com a flag u ligada: \p{L} aceita qualquer letra, com ou sem acento, inclusive o ç.

Alguns padrões comuns no Brasil para começar: um CEP é \d{5}-?\d{3}, e um CPF formatado é \d{3}\.\d{3}\.\d{3}-\d{2}. Lembre que isso só confere o formato, não se o CPF é válido de verdade.

Evitando padrões lentos

O backtracking catastrófico costuma vir de um grupo repetido que contém outra repetição, como (a+)+ ou (\w+\s?)*. Faça cada parte do padrão pegar algo distinto, ancore com ^ e $ sempre que der e prefira classes de caracteres específicas a .*.

Para conferir o efeito de uma substituição em um arquivo longo, compare o antes e o depois na ferramenta de comparar textos, e organize o JSON extraído no formatador de JSON.

Perguntas frequentes

Qual sabor de regex este testador usa?

Ele usa o motor de expressões regulares JavaScript do seu navegador, que segue o padrão ECMAScript e se comporta igual ao Node.js. Padrões que funcionam aqui funcionam no seu código JavaScript e TypeScript. Outros sabores, como PCRE, Python ou .NET, têm algumas diferenças de sintaxe e de recursos, então teste esses no ambiente deles.

O que fazem as flags g, i, m, s, u e y?

g encontra todas as correspondências, e não só a primeira. i ignora maiúsculas e minúsculas. m faz ^ e $ valerem no começo e no fim de cada linha. s deixa o ponto pegar quebras de linha. u liga o modo Unicode completo, necessário para coisas como \p{L}. y (sticky) só encontra correspondência exatamente na posição onde a anterior terminou.

Como usar grupos de captura na substituição?

Digite a substituição no campo Substituir por. Use $1, $2 e assim por diante para grupos numerados, $<nome> para um grupo nomeado e $& para a correspondência inteira. O bloco Resultado após substituir mostra o texto completo com todas as substituições aplicadas, e você pode copiá-lo.

Por que meu padrão foi interrompido por demorar demais?

Alguns padrões, como (a+)+ seguido de algo que não bate, fazem o motor testar um número enorme de combinações. Isso se chama backtracking catastrófico. O testador roda cada padrão em um worker separado, em segundo plano, e interrompe depois de 1,5 segundo para a página nunca travar. Reescreva o padrão para que repetições aninhadas não possam casar o mesmo texto de jeitos diferentes.

Existe limite de correspondências?

O total de correspondências é sempre contado e exibido, mas a tabela Detalhes das correspondências lista as primeiras 1.000 para manter a página rápida. O destaque no texto cobre essas mesmas 1.000 primeiras.

Meu texto de teste é enviado para um servidor?

Não. Padrões e textos são processados em um Web Worker dentro do seu navegador. Nada é enviado nem armazenado, então dá para testar em arquivos de log ou dados que contenham informações pessoais.

Não encontrou a ferramenta que precisa ou algo não está funcionando?

Conte qual ferramenta você gostaria ou o que deu errado. Lemos todas as mensagens, e os pedidos decidem o que criamos a seguir.

Abre seu app de e-mail. Por favor, não anexe arquivos privados.