Regex在没有www.的情况下查找域名

Regex to find domain name without www

本文关键字:情况下 查找 域名 www Regex      更新时间:2023-09-26

我想获得没有www 的域名

例如:https://www.gmail.com/anything输出应该是gmail.com(或.net或.org)

有人能帮我给出一个正则表达式吗?

使用诸如/(?:https?:'/'/)?(?:www'.)?(.*?)'//:之类的正则表达式

var str = "https://www.gmail.com/anything";
var match = str.match(/(?:https?:'/'/)?(?:www'.)?(.*?)'//);
console.log(match[match.length-1]); //gmail.com (last group of the match)

注意:这将获得http/https协议之后的所有内容,不包括www-直到第一个斜杠

额外注意:很多域都使用子域,因此mail.google.com会突然变成google.com,因此无法工作。Mine包括www中除之外的所有子域。

您可以使用<a>来获取有关URL的信息。例如:

var a = document.createElement("a");
a.href = "http://www.google.com";

您可以使用检索域

var domain = a.hostname;

你可以去掉任何领先的"www.":

domain = domain.replace(/^www'./, "");

作为一种可重复使用的功能,您可以使用:

function getDomain(url) {
    var a, domain;
    a = document.createElement("a");
    a.href = url;
    domain = a.hostname;
    domain = domain.replace(/^www'./, "");
    return domain;
}

演示:http://jsfiddle.net/DuK6D/


有关MDN 上HTMLAnchorElement JS对象的更多信息/属性