MV Tools

Uma execução real de casos limite regex

Como testar expressões regulares JavaScript com casos de borda e substituições mais seguras

Um fluxo para tornar regex JavaScript revisável: intenção em casos, motor e flags explícitos, padrões caros longe de entradas de produção.

Equipe editorial de MV ToolsAtualizado 8 min de leitura

Abrir ferramenta

Descreva antes do padrão

Liste casos que devem e não devem corresponder, limites, entrada vazia, Unicode e casos quase correspondentes. Indique se precisa de correspondência completa ou de um grupo.

Âncoras, limites, espaços, partes opcionais e escapes importam. Use um analisador para JSON, URL, datas ou marcação quando a gramática completa for necessária.

Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.
Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.

Mesmo motor e flags explícitas

Usa JavaScript RegExp: g, i, m, s, u, y. PCRE, Python, Java, .NET, banco ou servidor podem diferir.

g considera ocorrências, m muda ^/$, s amplia ponto, u Unicode, y exige posição exata.

Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.
Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.

Revise grupos e substituição

Confira grupos numerados e nomeados presentes e opcionais ausentes.

Teste $&, $1 e $<name>. Com substituição, a prévia substitui globalmente sem g.

A quase correspondência e a linha longa continuam inalteradas.
A quase correspondência e a linha longa continuam inalteradas.

Evite risco de desempenho

Repetições ambíguas aninhadas como `(a+)+` ou `(.*)*` podem ser lentas em entradas longas que quase correspondem.

Há limites de 500 KB e 1.000 correspondências, mas não há isolamento em processo separado nem tempo máximo de execução. Use casos adversariais curtos e proteção no servidor.

A quase correspondência e a linha longa continuam inalteradas.
A quase correspondência e a linha longa continuam inalteradas.

Mantenha casos repetíveis

Guarde o padrão, os sinalizadores, os exemplos e as expectativas junto ao código e automatize os testes no ambiente de execução final.

Tudo é local, mas logs, tokens, e-mails e URLs assinadas continuam sensíveis.

Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.
Âncoras e multiline avaliam cada linha inteira sem aceitar trechos.

Perguntas frequentes

Por que falha no servidor?

O servidor pode usar outro motor.

g muda substituição?

A prévia substitui globalmente.

500 KB evita regex lenta?

Não. A ferramenta não impõe um tempo máximo de execução.