正则表达式无效并超时

时间:2016-04-14 01:51:44

标签: c# regex

我的正则表达式可能有些错误(可能是循环过多) 我认为它导致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

如何修复它以便它不会超时?

更新 什么是“*”应该做的确切?

1 个答案:

答案 0 :(得分:5)

*表示尽可能多地匹配0次以上。

你的正则表达式是灾难性的回溯。

你的正则表达式没有意义,你可能想描述一下你想要匹配的东西。如果您使用不区分大小写的修饰符,那么您也不需要A-Za-z

如果您想确保您的字符串包含指定字符的1-256,请尝试以下操作:^([-0-9a-z/]){1,256}$