用于网站URL验证的正则表达式

时间:2011-07-13 06:35:58

标签: c# .net asp.net regex

如何通过正则表达式验证这些网址:

http://123.12.12.124:1234/default.html
http://www.mysite.com
http://www.mysite.com/
https://www.mysite.com
anyProtocol://www.mysite.com
www.mysite.com
mysite.com

http://www.my.site.com/default.aspx
http://www.my.site.com/default
http://www.my.site.com/default/
anyProtocol://www.my.site.com/default.anyExtension

http://www.my.site.com
anyProtocol://www.my.site.com/
https://www.my.site.com
www.my.site.com
my.site.com

2 个答案:

答案 0 :(得分:1)

不要试图自己验证URL,而是查看System.Uri类。如果您尝试使用无效地址创建Uri,则应该抛出UriFormatException。快速举例:

var valid = false;
try { 
    new Uri(someUrl);
    valid = true;
}
catch (UriFormatException) {}

如果不包含方案(http://部分),这将无效,因为它不是有效的URI,因此您应该首先尝试使输入URL保持正确。

答案 1 :(得分:0)

如果您尝试在.NET中构建自己的URL重写引擎,那么我强烈建议您使用现有的产品。 Linke内置于IIS 7中。

但除此之外,这里有一些暗示你需要检查的内容:

  

http://123.12.12.124:1234/default.html

我只是检查它是否与exakt匹配。

  

http://www.mysite.com http://www.mysite.com/ https://www.mysite.com   anyProtocol://www.mysite.com www.mysite.com mysite.com

既然你说anyprotocol,甚至只是mysite.com,那么我会检查mysite.com是否在网址中,并且它在网址之后最多只有一个“/”。

  

http://www.my.site.com/default.aspx http://www.my.site.com/default   http://www.my.site.com/default/   anyProtocol://www.my.site.com/default.anyExtension

     

http://www.my.site.com anyProtocol://www.my.site.com/   https://www.my.site.com www.my.site.com my.site.com

在这里你只需要检查网址是否包含我的“my.site.com”,并且还要添加(0,1)“默认”,因为你不关心扩展名。