C# 正则表达式不工作,正在超时

C# 正则表达式不工作,正在超时,c#,regex,C#,Regex,我的正则表达式可能有问题(可能循环太多) 我认为这也会导致MVC(C#)web应用程序超时 正则表达式是: public const string UrlPartPost = @"^([0-9a-zA-Z-/]*){1,256}$"; 我是这样使用它的: Regex.Match(urlPart3, RegExKeys.UrlPartPost, RegexOptions.IgnoreCase).Success 我添加了一个实时测试-这也是超时: 这很好:test1-test2-test3-t

我的正则表达式可能有问题(可能循环太多) 我认为这也会导致MVC(C#)web应用程序超时

正则表达式是:

public const string UrlPartPost = @"^([0-9a-zA-Z-/]*){1,256}$";
我是这样使用它的:

Regex.Match(urlPart3, RegExKeys.UrlPartPost, RegexOptions.IgnoreCase).Success
我添加了一个实时测试-这也是超时:

这很好:test1-test2-test3-test4-test5

此超时:test1-test2-test3-test4-testu 5

如何修复它,使其不会超时?

更新:
“*”到底应该做什么?

*
表示尽可能多地匹配0+次

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

您的正则表达式没有真正意义,您可能需要描述您试图匹配的内容。如果使用不区分大小写的修饰符,也不需要
A-Z
A-Z


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

只需
[\da-zA-z-/]+
[0-9a-zA-z-/]{1256}
我忘了为什么在那里有星号了。。。不确定它是做什么的,我确实需要确保字符串的长度在1到256之间…好吧,我看不出您的测试字符串正在超时,但基于模式没有成功。看,我想我需要睡一觉,当我醒来的时候,我想知道为什么我把那个星号放在那里(那是很久以前的事了),它似乎没有它也能工作。。。我想我是在试着允许前斜杠。。。