Pular para o conteúdo principal
FreeOnlineTools Go
Português (Brasil)
Referência

Folha de referência de expressões regulares: sintaxe, flags e padrões comuns

Por FreeOnlineTools Team · Atualizado em 2026-08-28

Resposta rápida

Uma regex combina caracteres literais, metacaracteres (., \d, \w, \s), quantificadores (*, +, ?, {n,m}), âncoras (^, $, \b) e grupos ((...), [...]). Sinalizadores como g (global), i (sem distinção entre maiúsculas e minúsculas), m (multilinhas) alteram o comportamento de correspondência. Os padrões de teste vivem com nosso Regex Tester antes de incorporá-los no código.

Introdução

Expressões regulares (regex) descrevem padrões de texto usando uma linguagem formal compacta. Eles são suportados por todas as linguagens de programação, editores e ferramentas de pesquisa modernas. Esta folha de dicas é uma referência para a sintaxe definida pelo ECMAScript (usado pelo JavaScript), além de padrões comuns que você pode copiar e adaptar. Use nosso testador Regex para testar qualquer padrão em um texto de amostra em seu navegador.

Passo a passo

  1. Classes de personagens —correspondem a um conjunto de caracteres

    [abc] corresponde a a, b ou c. [^abc] corresponde a qualquer coisa, exceto a, b, c. [a-z] corresponde a qualquer letra minúscula. Classes predefinidas: \d = [0-9], \D = sem dígito, \w = [A-Za-z0-9_], \W = sem palavra, \s = espaço em branco, \S = sem espaço em branco, . = qualquer caractere exceto nova linha (use o sinalizador s para incluir nova linha).

  2. Quantificadores — quantas vezes repetir

    * = 0 ou mais. + = 1 ou mais. ? = 0 ou 1. {n} = exatamente n. {n,} = pelo menos n. {n,m} = entre n e m. Adicionar ? para correspondência lenta (por exemplo, *? corresponde ao mínimo possível). Ganancioso é o padrão e pode causar retrocesso catastrófico em padrões aninhados.

  3. Âncoras e limites – onde combinar

    ^ corresponde ao início da string (ou linha com sinalizador m). $ corresponde ao final. \b corresponde a um limite de palavra (entre \w e \W). \B corresponde a um limite que não é de palavra. As âncoras têm largura zero – elas testam a posição sem consumir caracteres.

  4. Grupos e alternância

    (abc) é um grupo de captura; use $ 1, $ 2 em substituições. (?:abc) é um grupo sem captura. (?=abc) é um lookahead (afirma o que se segue). (?!abc) é uma previsão negativa. (?<=abc) é um lookbehind (ES2018+). a|b é alternância (a ou b).

  5. Sinalizadores —alterar comportamento de correspondência

    g = global (encontre todas as correspondências, não apenas a primeira). i = não diferencia maiúsculas de minúsculas. m = multilinha (^ e $ correspondem aos limites da linha). s = dotAll (. corresponde à nova linha). u = unicode (trate o padrão como pontos de código Unicode; necessário para emoji e caracteres astrais). y = sticky (corresponde apenas a lastIndex).

Exemplos

Combine um endereço de e-mail (prático, RFC 5322 simplificado)

Entrada: Pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/

Saída: Corresponde a '[email protected]' e '[email protected]', mas não a 'plainaddress' ou '@no-user.com'

Extraia todos os códigos de cores hexadecimais de CSS

Entrada: Pattern: /#[0-9a-fA-F]{3,8}\b/g

Saída: In 'color: #fff; background: #1a2b3c4d' finds ['#fff', '#1a2b3c4d']

Validar uma data ISO 8601 (AAAA-MM-DD)

Entrada: Pattern: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

Saída: Corresponde a '2026-08-28', mas rejeita '2026-13-01' e '2026-02-31'

Substitua os dígitos por # usando um grupo de captura

Entrada: 'Pedido 42 enviado' substituído por /(\d+)/g →'#$1'

Saída: 'Pedido nº 42 enviado'

Problemas comuns

  • Quantificadores gananciosos que correspondem demais: '<.*>' em '<a><b>' corresponde à string inteira '<a><b>' em vez de '<a>'. Use '<.*?>' (preguiçoso) para corresponder '<a>' primeiro.
  • Retrocesso catastrófico: quantificadores aninhados como (a+)+b na entrada 'aaaaaaaaaaaaaaaa!' pode levar um tempo exponencial. Reescreva o padrão ou use grupos atômicos/quantificadores possessivos quando houver suporte.
  • Esquecendo o sinalizador u para Unicode: /^.$/ corresponde a uma única unidade de código, então emoji como '😀' (duas unidades de código) falham sem o sinalizador u. Sempre adicione você ao combinar caracteres astrais.
  • Confundir \b (limite de palavra) com \s (espaço em branco): \b corresponde entre um caractere de palavra e não-palavra, portanto também funciona no início/fim da string. \s corresponde apenas a caracteres de espaço em branco reais.

Dicas

  • Sempre teste o regex em amostras correspondentes e não correspondentes em nosso Regex Tester antes de incorporá-lo no código de produção - casos extremos são fáceis de perder.
  • Prefira classes de caracteres [a-z] em vez de alternância (a|b|...|z) para caracteres únicos — as classes são mais rápidas e claras.
  • Use grupos sem captura (?:...) quando você não precisar do valor capturado - a captura tem um pequeno custo de desempenho e sobrecarrega a matriz de resultados.
  • Compile regex uma vez com new RegExp() ou um literal no escopo do módulo, não dentro de um hot loop - recompilar o mesmo padrão em cada iteração desperdiça CPU.

Ferramentas relacionadas

Guias Relacionados

Referências