灾难性回溯[A-Z] *([0-9A-Z])-[1-9] *([0-9])

时间:2019-08-13 14:12:29

标签: regex recursive-backtracking

我正在运行一个脚本,该脚本有时会导致服务器的CPU占用率达到100%。我怀疑这是由于某些正则表达式。 是否有任何示例输入可能导致此正则表达式发生灾难性的回溯:[A-Z] ([[0-9A-Z])-[1-9] ([0-9])

用于将ABC-123之类的jira票证模式匹配到提交消息中

ON

找到可能导致正则表达式回退并将cpu设为100%的变量commit_msg的可能值

1 个答案:

答案 0 :(得分:2)

据我所知,正则表达式不是问题,它可能在代码的其他地方。

Catastrophic backtracking通常与背对背或嵌套的所有格修饰符一起出现,并且您的正则表达式中没有这些示例。在regex101.com上进行的一些模糊测试也表明,对无效正则表达式没有任何更改,使得确定故障的步骤呈指数增长。

话虽如此,如果您仍然担心回溯并且不信任正则表达式,您是否知道Atlassian自己已经发布了official regexes to match JIRA ids