【问题标题】:Get domain name RegEx [duplicate]获取域名RegEx [重复]
【发布时间】:2014-05-03 16:17:10
【问题描述】:

需要一个模板 RegEx 来获取域名。

例如,我有:

lifenews.ru
www.forbes.com
goo.gl
ya.ru

然后得到:

lifenews
forbes
goo
ya

【问题讨论】:

标签: regex


【解决方案1】:

怎么样:

^(?:.*(?=\..*\..*).)?([^.]+)

Demo on regex101.

第一部分 ((?:.*(?=\..*\..*).)?) 将消耗 www.stuff.abc.comabc.com 之前的所有内容(带有两个点的单词序列,例如)。下一部分 (([^.]+)) 匹配 abc

【讨论】:

  • 这将在使用多个级别的国家/地区的域上失败,例如 BBCNew South Wales
  • @ClickRick 你是对的。我没有想到这些案例 - 没有错误地认为这是问题的意图。但是,在不枚举它们的情况下预测这些情况的正则表达式(如已接受的答案或标记为重复问题中的答案)是不可能的。干杯!
【解决方案2】:
preg_match('/(?:www\.)?(\w+)\./', $url, $matches);
$host = $matches[1];

这行得通,据我所知,它说明有人输入www 与否。

【讨论】:

  • 这假定感兴趣的域名部分将是第一个或将跟随www.
【解决方案3】:

没有正则表达式的Javascript:

var parts = "www.forbes.com".split('.');
parts.pop();//first level domain
var domain = parts.pop(); //second level domain

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2023-03-27
    • 1970-01-01
    • 2013-05-04
    • 2014-05-31
    相关资源
    最近更新 更多