我的正则表达式可能有些错误(可能是循环过多) 我认为它导致MVC(C#)Web应用程序也超时......
regEx是:
public const string UrlPartPost = @"^([0-9a-zA-Z-/]*){1,256}$";
我这样用:
Regex.Match(urlPart3, RegExKeys.UrlPartPost, RegexOptions.IgnoreCase).Success
我添加了一个实时测试 - 这也是暂时的: https://regex101.com/r/vZ0lN5/1
这很好:test1-test2-test3-test4-test5
这次超时:test1-test2-test3-test4-test_5
如何修复它以便它不会超时?
更新 什么是“*”应该做的确切?
答案 0 :(得分:5)
*
表示尽可能多地匹配0次以上。
你的正则表达式是灾难性的回溯。
你的正则表达式没有意义,你可能想描述一下你想要匹配的东西。如果您使用不区分大小写的修饰符,那么您也不需要A-Z
和a-z
。
如果您想确保您的字符串包含指定字符的1-256,请尝试以下操作:^([-0-9a-z/]){1,256}$