O que é esta ferramenta?
Uma expressão regular (regex) é uma linguagem de padrões compacta para localizar, validar e extrair texto: um padrão de e-mail pode validar os dados introduzidos num formulário, \d{4}-\d{2}-\d{2} identifica datas e os grupos de captura extraem as partes necessárias. Quase todas as linguagens de programação e editores suportam expressões regulares.
Este testador utiliza o motor de expressões regulares do JavaScript — o mesmo que funciona no Node.js e em todos os navegadores — pelo que os padrões que criar aqui se comportam de forma idêntica no seu código JavaScript/TypeScript. A maioria dos padrões também funciona sem alterações em Python, Java e Go.
Por que usar?
- Feedback em tempo real: as correspondências são destacadas a amarelo à medida que escreve o padrão.
- Grupos de captura apresentados por correspondência — veja exatamente o que $1 e $2 irão conter.
- Suporte completo a opções: g (correspondências completas), i (ignorar maiúsculas e minúsculas), m (várias linhas), s (o ponto corresponde a uma nova linha), u (Unicode).
- Mostrar mensagens de erro quando o padrão apresentar um erro de sintaxe.
- Gratuito e privado — o padrão e o texto nunca saem do seu navegador.
Como usar
- Digite o seu padrão entre os dois caracteres / (não é necessário utilizar caracteres de escape para as barras).
- Ajuste os parâmetros na pequena caixa a seguir ao segundo / — a opção «g» predefinida encontra todas as correspondências.
- Cole o seu texto de teste abaixo.
- As correspondências são destacadas instantaneamente; os grupos de captura são apresentados logo abaixo.
- Se o padrão não for válido, a mensagem de erro explica o que está errado.
Exemplo
Entrada
Pattern: (\w+)@(\w+)\.com
Test string: Contact alice@example.com or bob@test.comResultado
✓ 2 matches
#1 groups: $1=alice $2=example
#2 groups: $1=bob $2=testOs parênteses criam grupos de captura aos quais pode fazer referência como $1 e $2 nas substituições.
Dicas práticas
- Validar um endereço de e-mail introduzido? ^[^\s@]+@[^\s@]+\.[^\s@]+$ é um padrão permissivo que deteta erros ortográficos óbvios sem rejeitar endereços válidos, mas invulgares — a conformidade total com a RFC 5322 requer uma biblioteca, não uma linha única de código.
- Extrair parâmetros de consulta de um URL: [?&]([^=]+)=([^&]*) com a opção «g» e, em seguida, ler $1/$2 por correspondência, em vez de separar manualmente com base nos símbolos «&» e «=».
- Está prestes a utilizar um padrão no método .replace()? Teste-o aqui primeiro — o que fica destacado é exatamente o que o método .replace() irá alterar, incluindo os grupos de captura.
- Analisar registos com várias linhas (correspondendo a um carimbo temporal no início de cada linha)? Adicione o sinalizador «m» para que os ancras «^» e «$» se refiram a cada linha, em vez de à cadeia de caracteres completa.
- Copiou um padrão do Python ou do PHP e este não funciona aqui? Verifique se existem grupos nomeados (?P<name>...) — o JavaScript utiliza (?<name>...), sem o P — ou quantificadores possessivos (++, *+), que não existem nas expressões regulares do JavaScript.
Um testador de expressões regulares em JavaScript, não um testador genérico
Esta ferramenta executa o motor RegExp integrado do JavaScript — o percurso de código exato por trás de str.match(pattern) ou pattern.test(str) na consola de um navegador ou no Node.js. Isto difere dos testes com PCRE (o que o PHP utiliza e o que muitos testadores de expressões regulares «universais» utilizam por predefinição) ou com o módulo re do Python: O JavaScript não tem quantificadores possessivos nem grupos atómicos, e os grupos de captura nomeados utilizam (?<name>...) em vez do (?P<name>...) do PCRE/Python.
Se estiver prestes a implementar um padrão em JS ou TypeScript — validação de formulários, um comparador de rotas, um analisador de registos —, testá-lo aqui significa que não há qualquer discrepância: o que fica destacado nesta página é exatamente o que a nova função RegExp(padrão, sinalizadores) identifica em tempo de execução.
Como isto se enquadra nos fluxos de trabalho reais
Um teste de expressão regular raramente é feito isoladamente. A sequência habitual é a seguinte: confirmar o padrão aqui, executar o método .replace() propriamente dito no seu código e, em seguida, comparar o texto antes e depois para se certificar de que a substituição produziu o resultado esperado e nada mais.
A extração de dados estruturados com grupos de captura costuma gerar diretamente dados em JSON — formate os dados extraídos para verificar se foram analisados da forma que esperava.
Perguntas frequentes
Que variante de expressões regulares utiliza este testador?
JavaScript (ECMAScript), o motor presente em todos os navegadores e no Node.js. A sintaxe básica é portátil, mas algumas funcionalidades diferem entre as linguagens — por exemplo, o suporte à análise retroativa e a sintaxe dos grupos nomeados variam no Python e no Java.
Por que é que o meu padrão só encontra a primeira correspondência?
Falta o sinalizador g (global). Sem o g, uma expressão regular termina após a primeira correspondência. Esta ferramenta utiliza o g por predefinição — certifique-se de que não o removeu.
Porque é que o . não corresponde às minhas quebras de linha?
Por predefinição, . corresponde a qualquer carácter, exceto linhas novas. Adicione o sinalizador s (dotall) para que . também corresponda a linhas novas, ou utilize [\s\S] como alternativa portátil.
O que significam os resultados do grupo de captura?
Cada par de parênteses no seu padrão captura o texto com o qual coincidiu. $1 corresponde ao primeiro grupo, $2 ao segundo e assim por diante — são estes que se utilizam nas operações de substituição e no código de extração.
Por que é que a minha expressão regular está lenta ou a bloquear?
É provável que ocorra um retrocesso catastrófico, causado por quantificadores aninhados como (a+)+ numa entrada não correspondente. Reescreva o padrão para evitar repetições ambíguas. Esta ferramenta limita-se a 1000 correspondências para manter a rapidez de resposta.