【问题标题】:Regexp for web site url validation用于网站 url 验证的正则表达式
【发布时间】:2011-07-13 06:35:57
【问题描述】:

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

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

【问题讨论】:

  • 那么,您自己尝试过什么?您的正则表达式的哪一部分有问题?
  • 是的。你必须为自己有一个开始,不是吗?我们不是在这里为您提供完整的解决方案来解决您的问题。我们在这里帮助您找到具体问题的答案。我们很乐意为您提供指导,就像下面的 Martin 一样,但您很少会找到愿意只写完整解决方案的人。

标签: c# .net asp.net regex


【解决方案1】:

与其尝试自己验证 URL,不如查看 System.Uri 类。如果您尝试使用无效地址创建Uri,它应该抛出UriFormatException。快速示例:

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

如果方案(http:// 部分)不包括在内,这将是无效的,因为它不是有效的 URI,因此您应该首先尝试使输入 URL 合理。

【讨论】:

  • 如何在客户端执行此操作?新 System.Uri 在服务器端运行。
  • @Alex,请编辑您的问题以添加这条新信息。它应该从一开始就在那里。 =)
  • 你没有在你的问题中说这个,你应该在 JavaScript 中寻找解决方案。您可以使用服务器端服务(使用System.Uri)来验证URI 客户端。如果您需要更多帮助,请尝试并提出新问题。
【解决方案2】:

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

但除此之外,这里有一些关于您实际需要检查的提示:

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

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

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.comanyProtocol://www.my.site.com/ https://www.my.site.comwww.my.site.com my.site.com

在这里,您只需要检查 url 是否包含我的“my.site.com”,并添加一个 (0,1) 的“默认”,因为您不需要关心扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 2014-09-15
    • 2011-06-17
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多