Início › Blog › Soluções para Regex
Ferramentas de Desenvolvedor

Por que seu Regex não funciona: Modificadores, quebras de linha e caracteres de escape

Publicado: 17 de outubro de 2026 • Atualizado: 17 de outubro de 2026 • Autor: Equipe de Engenharia GoToolstack • Testado no Testador de Regex GoToolstack
Teste e depure sua regex em tempo real: Destaque instantâneo, detalhamento de grupos de captura e proteção contra ReDoS diretamente no navegador.
Abrir Testador de Regex
Índice de conteúdo
  1. Diagnóstico direto: Por que um padrão válido não corresponde
  2. Modificadores essenciais: g, i, m e s (Não confunda m com s)
  3. Quantificadores gulosos (.*) vs. preguiçosos (.*?)
  4. Caracteres de Escape e a Armadilha da Barra Invertida (Contexto Literal vs Classe)
  5. Exemplos práticos testados no motor GoToolstack
  6. Diferenças de motor e prevenção de ReDoS
  7. Ferramentas GoToolstack para Desenvolvedores
  8. Referências técnicas e normas oficiais

1. Diagnóstico direto: Por que um padrão válido não corresponde

Uma expressão regular sem erros de sintaxe pode falhar em execução devido a modificadores ausentes, quebras de linha inesperadas ou caracteres de escape incorretos. Entenda as regras do interpretador antes de reescrever seu padrão.

Analise os quatro mecanismos principais em sequência:

2. Modificadores essenciais: g, i, m e s (Não confunda m com s)

Os modificadores governam a execução: g busca globalmente; i ignora maiúsculas; m faz ^ e $ reconhecerem cada linha; s permite que o ponto coincida com quebras de linha.

Motor de expressões regulares: mecânica de sinalizadores e âncoras de linha
Figura 1: Comportamento das âncoras regex: limites globais versus limites por linha com /m.
  • g (Global): Faz a busca em todo o texto em vez de parar na primeira ocorrência.
  • i (Ignorar maiúsculas): Ignora distinção entre letras maiúsculas e minúsculas.
  • m (Multilinhas): Faz com que ^ e $ coincidam com o início e o fim de cada linha.
  • s (dotAll): Permite que o ponto (.) coincida com quebras de linha (\n, \r).

DIFERENÇA CRUCIAL: O modificador multilinhas (m) NÃO permite que o ponto (.) salte quebras de linha! Do mesmo modo, o dotAll (s) não faz com que ^ ou $ coincidam em linhas individuais. Misturar m e s é a causa número um de erros.

3. Quantificadores gulosos (.*) vs. preguiçosos (.*?)

Por padrão, quantificadores são gulosos (greedy): consomem o maior número de caracteres possível antes de retroceder.

Ao isolar tags em: <div>A</div><div>B</div>

Padrão guloso <div>.*</div>: Abrange da primeira abertura ao último fechamento em uma única captura excessiva.

Padrão preguiçoso <div>.*?</div>: Interrompe a busca no primeiro fechamento encontrado, separando perfeitamente as tags.

4. Caracteres de Escape e a Armadilha da Barra Invertida (Contexto Literal vs Classe)

Expressões regulares reservam caracteres sintáticos: \ ^ $ . | ? * + ( ) [ { } ]. As regras de escape dependem do contexto:

  • Fora de classes de caracteres: Todos os caracteres sintáticos exigem barra invertida (ex: \., \$) para busca literal.
  • Dentro de classes de caracteres ([...]): A maioria dos metacaracteres perde a função especial e é tratada literalmente (ex: [.] casa ponto; [*] casa asterisco). Apenas ^ (negação no início), - (intervalo), ] (fechamento) e \ (escape) retêm função sintática.

No código JavaScript, diferencie o literal do construtor:

// 1. Regex Literal (single backslash required)
const reLiteral = /^\d+\.\d+$/;

// 2. String Constructor (double backslash mandatory)
const reConstructor = new RegExp("^\\d+\\.\\d+$");

5. Exemplos práticos testados no motor GoToolstack

Exemplos verificados com entradas reais no interpretador ECMAScript:

Cenário e Entrada Padrão e Modificadores Correspondência Verificada
ERROR 404 /api\nINFO 200 /home\nERROR 500 /db /^ERROR\s+(\d+)/gm ERROR 404, ERROR 500
Total cost: $49.99 USD /\$(\d+\.\d{2})/ $49.99
/* Multi-line
  comment */
/\/\*.*?\*\//s /* Multi-line
  comment */

6. Diferenças de motor e prevenção de ReDoS

O testador GoToolstack utiliza o motor local do seu navegador. Considere as seguintes fronteiras em relação ao PCRE ou Python:

  • Lookbehind: Suporte moderno ES2018+ (?<=...) e (?<!...).
  • Sem quantificadores possessivos: Não há suporte para .*+ ou grupos atômicos no JS.
  • Ataques ReDoS: Expressões aninhadas como (a+)+$ travam a aba. O GoToolstack utiliza Web Workers com timeout automático.
  • Validação de emails: Expressões gigantescas para RFC 5322 são arriscadas. O recomendado é validação simples com envio de código de confirmação.

7. Ferramentas GoToolstack para Desenvolvedores

Valide e estruture expressões regulares no seu navegador sem envio para servidores externos:

Referências técnicas e normas oficiais