如何使用jquery从url中提取主机名[重复]

Posted

技术标签:

【中文标题】如何使用jquery从url中提取主机名[重复]【英文标题】:how to Extract hostname from url using jquery [duplicate] 【发布时间】:2015-04-19 06:01:30 【问题描述】:

这里是 URL 示例。

1) domain.com/our-work/insights/tips-and-advice/2008/02/04/the-path-to-good-design-is-proper-analytics
2) subdomain.domain.com
3) im.domain.com/About.htm
4) domain.uk/help.htm

得到这样的结果

domain.com
domain.uk

【问题讨论】:

我认为使用regex 可以很简单地完成。另外,到目前为止,您尝试过什么? 【参考方案1】:

为此,您可以简单地使用String.prototype.split() 方法和/ 作为分隔符来提取主机名,然后使用String.prototype.match() 取主机名的结尾(包含一个点):

var m = url.split('/')[0].match(/[^.]+\.[^.]+$/);
if (m)
    var domain = m[0];

注意:如果 url 以 scheme 开头,则需要先将其删除:

var pat = '^https?://';
url = url.replace(new RegExp(pat, 'i'), '');

另一种方法是直接查找域:

var pat = '^(?:https?://)?(?:[^/:]*:[^/@]*@)?[^/]*([^./]+\\.[^./]+)';
var m = url.match(new RegExp(pat, 'i'));
if (m)
    var domain = m[1];

但在这种情况下,您需要在主机名之前处理可能的登录/密码部分。这就是这个子模式的原因:(?:[^/:]*:[^/@]*@)?

【讨论】:

它没有给出预期的结果。 @Musakkhir:确切地说,我读得太快了!域名总是只有一个点吗? 域名中总会有一个点,上述模式不适用于这些网址。【参考方案2】:

您可以通过

获取主机名
window.location.hostname

Manual

【讨论】:

OP 想要获取 url 字符串的主机名,而不是页面的 url。 Vivek 的解决方案是正确的。【参考方案3】:

我认为这个正则表达式(如果你想使用正则表达式)可以完成这项工作:

\w+\.(?=(com|uk))

演示here.

【讨论】:

【参考方案4】:

试试这个。

你可以通过javascript函数来实现这个功能。

var name = document.domain;

你想从子域中找出域名而不是使用这个。

var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
var sndleveldomain = parts.slice(-2).join('.');
alert(sndleveldomain);

【讨论】:

以上url都是字符串。 那么你想要哪种数据类型? location.hostname 仅适用于当前域。我想要所有字符串形式的 url 的预期结果。 那么你在这个答案中遇到了什么问题?

以上是关于如何使用jquery从url中提取主机名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取网页的url

从jQuery中的URL中提取搜索查询[重复]

从 URL 获取域名/主机名的最快方法是啥?

从Javascript中的URL中提取一部分[重复]

如何使用 javascript/jquery 从 url 中提取文件名?

如何在jQuery中的两个字符串之间获取url的特定部分[重复]