/ /

Referência Rápida — clique para inserir

O que é uma Expressão Regular?

Uma expressão regular (regex ou regexp) é uma sequência de caracteres que define um padrão de busca. São usadas para busca em strings, validação, extração de texto e substituição. Regex é suportado em praticamente todas as linguagens de programação e é uma ferramenta essencial para qualquer desenvolvedor que trabalha com processamento de texto.

Referência Rápida de Sintaxe Regex

  • . — Corresponde a qualquer caractere exceto nova linha
  • ^ / $ — Início / fim da string (ou linha no modo multilinha)
  • * / + / ? — 0 ou mais / 1 ou mais / 0 ou 1
  • {n,m} — Entre n e m repetições
  • [abc] — Classe de caracteres — corresponde a a, b ou c
  • [^abc] — Classe de caracteres negada
  • (abc) — Grupo de captura
  • (?:abc) — Grupo sem captura
  • \d / \w / \s — Dígito / caractere de palavra / espaço em branco
  • a|b — Alternância — corresponde a a ou b

Padrões Regex Comuns

  • Email: [\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
  • URL: https?://[\w\-._~:/?#[\]@!$&'()*+,;=%]+
  • IPv4: (\d{1,3}\.){3}\d{1,3}
  • Telefone (BR): \(?\d{2}\)?[\s.-]?\d{4,5}[\s.-]?\d{4}
  • Cor hex: #([a-fA-F0-9]{6}|[a-fA-F0-9]{3})
  • Data (AAAA-MM-DD): \d{4}-\d{2}-\d{2}

Perguntas Frequentes sobre Expressões Regulares

Qual a diferença entre .* e .+ em regex?

O asterisco (*) significa "zero ou mais" do elemento anterior, enquanto o mais (+) significa "um ou mais". O padrão .* corresponde a qualquer string incluindo strings vazias, enquanto .+ requer pelo menos um caractere. Ambos são gananciosos por padrão — correspondem ao máximo possível. Adicione ? para torná-los preguiçosos (corresponder o mínimo possível): .*? e .+?.

O que fazem as flags g, i, m e s em regex?

A flag g (global) encontra todas as correspondências em vez de parar na primeira. A flag i torna a correspondência insensível a maiúsculas/minúsculas. A flag m (multilinha) faz ^ e $ corresponderem ao início e fim de cada linha ao invés da string inteira. A flag s (dotAll) faz o ponto corresponder a caracteres de nova linha. Combine flags conforme necessário: /padrão/gim.

Como corresponder um ponto literal, parênteses ou outros caracteres especiais?

Escape caracteres especiais de regex com uma barra invertida. Um ponto literal é \. (sem a barra invertida, o ponto corresponde a qualquer caractere). Um parêntese literal é \( e \). Outros caracteres que precisam de escape: \ ^ $ | ? * + { } [ ]. Por exemplo, para corresponder a URL example.com literalmente, escreva /example\.com/ — caso contrário, o ponto corresponderia a qualquer caractere.

Qual a diferença entre um quantificador ganancioso e um preguiçoso?

Quantificadores gananciosos (*, +, {n,m}) tentam corresponder ao máximo possível enquanto ainda permitem que o padrão geral funcione. Quantificadores preguiçosos (não-gananciosos) (*?, +?, {n,m}?) correspondem ao mínimo possível. Por exemplo, dado <b>negrito</b>, o ganancioso /<.*>/ corresponde à string inteira, enquanto o preguiçoso /<.*?>/ corresponde apenas a <b>.

Ferramentas Relacionadas para Desenvolvedores