【发布时间】:2017-07-20 17:30:35
【问题描述】:
我使用正则表达式来验证数字格式。
[-+]?([0-90-9]+((\,([0-90-9]{2,}))*\,([0-90-9]{3}))*)?(\.[0-90-9]*)?
当我为某些输入处理大量输入时,它似乎无限循环。我阅读了有关灾难性回溯的其他答案。 但我是一个正则表达式新手,需要一些帮助。 您能否提供任何可以使这个正则表达式灾难性地回溯的输入。对我理解会有帮助。谢谢。这也可能是一个很长的输入。 我正在使用 Java 模式和匹配器对象。
【问题讨论】:
-
[0-90-9]可以改成[0-9] -
对图案有什么要求?
[0-90-9]当然不是这里的主要问题,而是组内的嵌套量词。 -
谢谢,我注意到了,但如果有人可以让这个正则表达式无限回溯,我将不胜感激。在这种情况下,我可以确定这就是问题
-
@WiktorStribiżew 给我找一个会破坏这个正则表达式的输入,即导致它无限循环
-
这与“无限循环”或“递归回溯”无关...
标签: java regex infinite-loop matcher recursive-backtracking