【问题标题】:Regex for simple urls简单网址的正则表达式
【发布时间】:2012-07-30 15:33:14
【问题描述】:

我正在寻找简单 URL 的正则表达式

  • http://www.google.com
  • http://www.yahoo.in
  • http://www.example.eu
  • http://www.example.net
  • 等。

不允许有子目录。例如,在这种情况下,它不能验证http://www.google.com/http://www.yahoo.in/mail

有谁知道任何正则表达式可以做到这一点?

【问题讨论】:

  • 是否需要 http://,如果不存在三级域,是否应假定为 www?
  • 您使用哪种语言?如果它有解析 URL 的工具,请使用它并验证路径、查询和片段标识符是否为空。
  • 好吧,我已经搜索了整个互联网并尝试了无数的正则表达式,但没有一个有效。 http:// 不是必需的,它可以像 www.google.com 一样简单
  • IP 地址是否允许? 128.134.25.5 IPv6 呢?
  • @RohitMalish - 然后是update your question,以便更好地反映您的要求,包括您尝试使用但未能正常工作的代码,并为我们提供更大的上下文,以便在您吠叫时走错了树,有人可以为你指明正确的方向。

标签: regex url


【解决方案1】:

我还是个菜鸟,但试试这个:

^http:\/\/[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+$

【讨论】:

  • 行得通,谢谢。您能否也给我一个不带 http:// 的 url 示例?例如,如果它只是 www.google.com。提前致谢
  • 缺少两个字符:下划线 (_) 和破折号 (-)。
  • 只需将“http://”部分设为可选,您将得到:^(http:\/\/)?[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+$。另外,不要忘记标记回答您问题的答案:)
  • 谢谢 :) 是否可以制作一个与您提供的一样工作的正则表达式,但也可以验证 IP 地址?
  • 是的,并且存在这种类型的 URL。看,我将重复 Felix Kling 上面写的评论:“您使用的是哪种语言?如果它有解析 URL 的工具,请使用它并验证路径、查询和片段标识符是否为空”。对于彻底的案例,我们不要重新发明轮子。
【解决方案2】:

这个应该做的:

^(https?:\/\/)?[0-9a-zA-Z]+\.[-_0-9a-zA-Z]+\.[0-9a-zA-Z]+$

这应该适用于以 http://https:// 开头或没有协议名称的 URL。

正则表达式也应该不区分大小写。在这种情况下,它可以缩短一点:

^(https?:\/\/)?[0-9a-z]+\.[-_0-9a-z]+\.[0-9a-z]+$

【讨论】:

【解决方案3】:

如果你不关心它是否是一个有效的url,你可以使用:

\S*www\.\S+

所有示例都包含www. 后跟一个非空格字符,但这不太可能出现在普通单词中。

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多