如何在javascript或jquery中比较两个URL

如何在javascript或jquery中比较两个URL,javascript,jquery,html,url,Javascript,Jquery,Html,Url,可能重复: 我想比较URL的基本部分。如果我输入了www.websitename.com如果我输入,它应该说是重复的 http://www.websitename.com https://www.websitename.com websitename.com http://www.websitename.com/filename subdomain.websitename.com等。。 如何操作?如果您只想比较两个URL是否具有相同的域,可以使用正则表达式轻松编写代码 javascript无

可能重复:

我想比较URL的基本部分。如果我输入了
www.websitename.com
如果我输入,它应该说是重复的

http://www.websitename.com
https://www.websitename.com
websitename.com
http://www.websitename.com/filename
subdomain.websitename.com等。。

如何操作?

如果您只想比较两个URL是否具有相同的域,可以使用正则表达式轻松编写代码

javascript无法知道
http://www.websitename.com/
http://subdomain.websitename.com/
do或don解析到同一主机或内容,而不实际获取内容并对其进行比较,因为它完全取决于主机实现,主机实现可以通过任何方式进行设置,而不是其他方式javascript可以知道

下面是一个从URL获取域的函数:

function getDomain(url) {
    var prefix = /^https?:\/\//i;
    var domain = /^[^\/:]+/;
    // remove any prefix
    url = url.replace(prefix, "");
    // assume any URL that starts with a / is on the current page's domain
    if (url.charAt(0) === "/") {
        url = window.location.hostname + url;
    }
    // now extract just the domain
    var match = url.match(domain);
    if (match) {
        return(match[0]);
    }
    return(null);
}

您可以在此处看到它为每个URL返回的内容:

为什么不切断目录,然后对websitename进行字符串搜索?我是否遗漏了一个您不想在此处返回true的案例?使用正则表达式获取“//”和“.com”之间的所有内容。然后正常比较这两个字符串。请看:O看下面的投票!我不介意我在这篇评论中键入什么,这篇文章肯定会被删除:请注意主机名不区分大小写(而路径部分可能区分大小写)。@Leo-好的观点。我在查找
http://
时添加了大小写不敏感。比较返回的域将是此函数的调用方的责任。
getDomain(“http://foo.com:80“
->
”foo.com:80“
@Atomosk-你的评论是什么意思?你能解释一下吗?对于像
http://domain:port
您的方法返回
域:端口
<代码>http://domain:80和
http://domain
基本相同,因为80是http的默认端口,443是https的默认端口。我认为,对于任何阅读答案的人来说,知道答案都是件好事。