正则表达式可能变得非常复杂.缺少空白区域使他们难以阅读.我无法通过调试器使用正则表达式.那么专家如何调试复杂的正则表达式呢?
我使用以下正则表达式来检查有效的文件路径:
^(?:[a-zA-Z]\:\\|\\\\)([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})+$
Run Code Online (Sandbox Code Playgroud)
使用测试字符串V:\Sample Names\Libraries\DeveloperLib\DeveloperComDlgs\res被认为是有效的。我什至可以毫无问题地将无效字符添加到字符串的开头。但是,当我在字符串末尾添加无效字符时,网页会因灾难性的回溯而冻结。
是什么导致了这个正则表达式字符串出现这种情况?
完整字符串: ^(?:[a-zA-Z]\:\\|\\\\)([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})+$
第一组: (?:[a-zA-Z]\:\\|\\\\)
第二组: ([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})
[^\\\/\:\*\?\<\>\"\|]+
(\\){0,1}
我认为这可能是{0, 1}导致问题的原因,因为这允许回溯,但我不确定。有什么想法吗?