如何使用jquery从url中提取主机名

时间:2015-02-18 09:36:06

标签: javascript jquery regex 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

4 个答案:

答案 0 :(得分:1)

要做到这一点,您只需使用String.prototype.split()方法和/作为分隔符来提取主机名,然后使用String.prototype.match()获取主机名(包含点)的结尾:

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

注意:如果网址以方案开头,您需要在删除之前将其删除:

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];

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

答案 1 :(得分:0)

您可以通过

获取主机名
window.location.hostname

<强> Manual

答案 2 :(得分:0)

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

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

demo here

答案 3 :(得分:0)

试试这个。

您可以通过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);