如何通过正则表达式验证这些网址:
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
答案 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中。
但除此之外,这里有一些暗示你需要检查的内容:
我只是检查它是否与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)“默认”,因为你不关心扩展名。