Ferramenta gratuita

    Testador de Regex

    Teste, depure e visualize expressões regulares com correspondência em tempo real.

    Expressão regular

    //g
    Bandeiras:
    Predefinições:

    Cadeia de teste

    O que são expressões regulares?

    As expressões regulares (Regex) são padrões utilizados para identificar combinações de caracteres em cadeias de caracteres. São suportadas em praticamente todas as linguagens de programação e são essenciais para o processamento de texto, a validação de entradas, a pesquisa e substituição e a análise de registos.

    Sinalizadores de Regex em JavaScript

    • g — Global: encontrar todas as ocorrências, e não apenas a primeira
    • i — Correspondência sem distinção entre maiúsculas e minúsculas
    • m — Multilinha: ^ e $ correspondem aos limites das linhas
    • s — Dotall: . corresponde a caracteres de nova linha

    Casos de utilização comuns

    • Validação de endereços de e-mail, números de telefone e URLs
    • Extração de dados de ficheiros de registo e de texto estruturado
    • Pesquisar e substituir em editores de código e IDEs
    • Criação de máscaras de entrada e validadores de formulários
    • Análise e transformação de dados CSV, JSON e XML

    Quando recorrer às Regex

    As expressões regulares destacam-se em padrões curtos e bem definidos, nos quais é necessário corresponder, extrair ou substituir texto — análise de linhas de registo, regras de encaminhamento de URLs, validação de campos de formulários e operações de «procurar e substituir» num editor. Tornam-se, porém, um problema quando a entrada é, na verdade, uma linguagem estruturada: HTML, JSON, código-fonte ou qualquer coisa com delimitadores aninhados. Para esses casos, utilize um analisador sintático adequado; a RegEx que escrever hoje irá falhar silenciosamente no próximo caso limite.

    Regex Perguntas frequentes

    Respostas rápidas às questões sobre Regex com que se depara realmente quando cria padrões manualmente.

    Que variante de Regex utiliza este testador?
    Expressões regulares ECMAScript/JavaScript (o motor integrado no seu navegador). Os padrões que funcionam aqui funcionarão em `String.prototype.match`, `RegEx.test` e na maioria dos linters modernos baseados em JS ou extensões de editor. Os padrões escritos para PCRE (PHP, Perl), `re` do Python ou `regexp` do Go podem comportar-se de forma diferente — lookbehinds, grupos atómicos e a sintaxe de grupos nomeados são pontos comuns de divergência.
    Como faço para que o meu padrão não distinga entre maiúsculas e minúsculas?
    Ative o sinalizador `i` (sem distinção entre maiúsculas e minúsculas). Isto aplica a conversão de maiúsculas e minúsculas a todo o padrão, pelo que `/Hello/i` corresponde a `hello`, `HELLO` e `HeLLo`. Se pretender que apenas uma parte do padrão seja insensível a maiúsculas e minúsculas, terá de enumerar os caracteres explicitamente — os RegEx do JavaScript não suportam modificadores em linha como `(?i:...)`.
    Porque é que a minha Regex não faz a correspondência em várias linhas?
    Existem dois sinalizadores que afetam o comportamento em várias linhas. O sinalizador `m` (Multiline) altera os caracteres `^` e `$` para que correspondam aos limites das linhas, em vez de apenas ao início e fim da cadeia de caracteres completa — o que é útil para a validação linha a linha. Por outro lado, o sinalizador `s` (dotAll) faz com que `.` corresponda também a novas linhas — sem ele, `.*` pára no primeiro `\n`. A maioria dos casos de utilização com várias linhas requer ambos.
    Qual é a diferença entre quantificadores «greedy» e «lazy»?
    Por predefinição, os quantificadores como `*`, `+` e `{n,m}` são «greedy» — consomem o máximo de entrada possível, desde que a correspondência global seja bem-sucedida. Acrescentar `?` torna-os «lazy»: consomem o mínimo e deixam que as partes posteriores do padrão capturem o restante. O quantificador «greedy» `<.+>` em comparação com `` corresponde à string completa; o quantificador «lazy» `<.+?>` corresponde apenas a ``. Os quantificadores «lazy» são normalmente o que se pretende ao extrair campos entre delimitadores.
    Como faço para escapar de caracteres especiais no meu padrão?
    Por que é que a minha Regex encontra mais (ou menos) correspondências do que o esperado?