C# 正则表达式不工作,正在超时
我的正则表达式可能有问题(可能循环太多) 我认为这也会导致MVC(C#)web应用程序超时 正则表达式是: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
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之间…好吧,我看不出您的测试字符串正在超时,但基于模式没有成功。看,我想我需要睡一觉,当我醒来的时候,我想知道为什么我把那个星号放在那里(那是很久以前的事了),它似乎没有它也能工作。。。我想我是在试着允许前斜杠。。。