CodeKitHub
Português
Ferramentas de texto

Testador de Expressões Regulares Online

Escreva uma expressão regular e veja as correspondências destacadas no seu texto de teste instantaneamente, à medida que escreve. Os grupos de captura são listados por correspondência, e todos os sinalizadores de expressões regulares do JavaScript são suportados. Ótimo para criar e depurar padrões antes de os incorporar no código.

//

    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

    1. Digite o seu padrão entre os dois caracteres / (não é necessário utilizar caracteres de escape para as barras).
    2. Ajuste os parâmetros na pequena caixa a seguir ao segundo / — a opção «g» predefinida encontra todas as correspondências.
    3. Cole o seu texto de teste abaixo.
    4. As correspondências são destacadas instantaneamente; os grupos de captura são apresentados logo abaixo.
    5. 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.com

    Resultado

    ✓ 2 matches
    #1 groups: $1=alice  $2=example
    #2 groups: $1=bob  $2=test

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

    Diferenças entre textos · Formatador JSON

    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.

    Ferramentas relacionadas