【问题标题】:How to get the main domain string using regular expression?如何使用正则表达式获取主域字符串?
【发布时间】:2015-03-03 19:01:34
【问题描述】:

我刚刚开始使用正则表达式,但遇到了一个问题。因此,如果有人可以帮助我解决这个问题,那就太好了。

问题是,如果我有下面给出的网址;

$url = http://www.blog.domain.com/page/category=?

并且只想要 ,我怎样才能在 javascript 中使用正则表达式来获取它。

谢谢

【问题讨论】:

  • 请在下面找到答案,并将解决您问题的答案标记为已接受。

标签: javascript regex url


【解决方案1】:

这也应该有效,但最严格且更短:

var url = "http://www.blog.domain.com/page/category"
var result = url.replace(/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i,"$4")

如果您想要“domain.com”而不仅仅是“域”,请使用 $3 而不是 $4

分步说明:

  • 正确的域语法:字母、数字和“-”/([a-z0-9-]*)/i
  • 域扩展(2-6 个字符):/(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 子域:/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 网址以 http 开头,也可以是 https/^https?:\/\/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 输入网址时可以输入或不输入http:/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 那么 / 之后是什么:/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i

【讨论】:

    【解决方案2】:

    不要为此使用正则表达式:

    使用hostname:

    URLUtils.hostname 属性是一个 DOMString,其中包含 网址。

    var x = new URL("http://www.blog.domain.com/page/category=?").hostname;
    console.log(x);
    

    正如 vishwanath 所指出的,URL 面临与 IE

    使用这个:

    var str = "http://www.blog.domain.com/page/category=?";
    var res = str.match(/[^.]*.(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk)/g);
    console.log(res);
    
    => domain.com
    

    可以根据您的需要进一步扩展正则表达式中的列表。 可以找到 TLD 列表here

    【讨论】:

    【解决方案3】:

    您可以使用以下 RegEx 获取它:/.*\.(.+)\.[com|org|gov]/

    您可以在此正则表达式中添加所有受支持的域扩展。

    RegEx101 Explanation

    工作代码片段:

    var url = "http://www.blog.domain.gov/page/category=?";
    
    var regEx = /.*\.(.+)\.[com|org|gov]/;
    
    alert(url.match(regEx)[1]);

    【讨论】:

    • 兄弟,所有网址都不以.com结尾
    【解决方案4】:

    试试下面的代码

     var url = "http://www.blog.domain.com/page/category=?";
     var match = url .match(/(?:http?:\/\/)?(?:www\.)?(.*?)\//);
     console.log(match[match.length-1]);
    

    【讨论】:

    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    相关资源
    最近更新 更多