25 de setembro de 2022 • 1 min de leitura
Expressões regulares são uma ferramenta poderosa para encontrar padrões em textos. Mas, nem tudo são flores.. Uma das coisas que podem atrapalhar o uso de expressões regulares é o Catastrophic Backtracking.
O Catastrophic Backtracking é um problema que ocorre quando uma expressão regular é executada em um texto muito grande e que possui um padrão muito específico. O interpretador da expressão regular acaba levando bastante tempo para encontrar o padrão e, por isso, ou o sistema fica lento ou até mesmo pode travar por causa disto.
Um exemplo de como esse problema realmente é sério:
Imagine que no front você tenha um input de texto, e que por algum motivo você utiliza uma expressão regular para validar esse texto digitado. Se o usuário ou uma pessoa mal intencionada digitar um texto muito grande e que contenha um padrão específico, com certeza o Catastrophic Backtracking irá ocorrer, e o estrago você já sabe.
Exemplo do site Regular-Expressions.info utilizando a regex ^(.*?,){11}P no RegexBuddy’s debugger:

+ ou *, use-os apenas quando necessário!* - Corresponde ao caractere precedente zero ou mais vezes. Por exemplo, zo* corresponde a z ou zoo.+ - Corresponde ao caractere precedente uma ou mais vezes. Por exemplo, zo+ corresponde a zoo, mas não a z.Fontes: