【问题标题】:RegEx : Grab domain after sub domain (if there is one) from URL正则表达式:从 URL 获取子域(如果有)之后的域
【发布时间】:2011-04-01 14:45:27
【问题描述】:

这是我的问题:http://regexr.com?2temn

我相信对于你们中的一些正则表达式大师来说,这很简单。

干杯!

【问题讨论】:

  • 请在此处发布问题,而不是将其链接到可能很快就会消失的外部页面。没有 Flash 播放器的人(iOS,有人吗?),根本看不到问题所在。即使我关闭了 Flash 拦截器并查看该网站,我仍然不明白您到底想做什么。
  • 您应该重新表述您的问题。指向外部站点的链接很好,但如果没有这些附加信息,问题也必须是全面的。还要命名您使用此正则表达式的位置。正则表达式有很多种...
  • @Tim 确认不适用于 iOS
  • @Tim,你为什么要使用 Flash 拦截器?
  • @Christopher:因为所有烦人的广告都是 Flash 广告。 IMO 周围没有太多有用的 Flash 内容。当然,Regexr 是一个例外。

标签: regex


【解决方案1】:

这也有效:

(?<=\.|)\w+\.\w+$

仅使用 PHP 测试。

【讨论】:

  • 你能用“-”锁定域吗?
  • 仅适用于 http://www.example.comhttp://sub1.sub2.example.com 等,但如果 URL 中有尾随 / 或路径,则会失败。
【解决方案2】:

在(可能的)子域之后获取域
其实是一样的
在顶级域之前获取域

它只是从 URL 中获取域名。

可能duplicate

【讨论】:

    【解决方案3】:

    尝试:

    (\w+\.\w+)[\r\n]+
    

    在换行符之前匹配带点的字符串

    【讨论】:

      【解决方案4】:

      正则表达式(通用形式)
      /^(?:https?://)?(?:([\w_.-]+?).)*[\w_-]+\.\w+.+$/i

      测试:

      http://subdomain.domain.tld/foo/bar.html => 一个匹配项(子域) http://subdomain.subdomain2.domain.tld/bar => 两个子匹配(子域,子域2) http://justdomain.tld => 不匹配

      使用 C# 测试。
      C# 版本的正则表达式

       ^(?:http://)?(?:([\w+_.-]+?)\.)*[\w+_-]+\.\w+.+$
      

      DEMO

      【讨论】:

      • 这与 https 网站不匹配。
      • 我刚刚添加了对 https 站点的支持。但是其他协议(ftp、irc 等)呢? pagewil 没有精确。
      • 如果 tld 包含两个单词,这将不起作用。喜欢某事.co.uk
      • @Kannaiyan 请在帖子中查看带有.co.uk 域的工作演示。
      猜你喜欢
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多