如何在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的默认端口。我认为,对于任何阅读答案的人来说,知道答案都是件好事。