如何使用reg ex来获取超级域名?

时间:2016-01-08 00:18:48

标签: javascript regex

而不是子域。

我试过了。

  var a = window.location.hostname.match(/(www.)?([^\.]*)\./)[2];

但这会抓住

frozen-dusk-2587

https://frozen-dusk-2587.herokuapp.com/

我只想要

herokuapp

如果有多个子域并且只抓住最后一个,我希望它能够工作......例如

x.x.x.y.com

总是抓住

y

2 个答案:

答案 0 :(得分:3)

var a = window.location.hostname.match(/(?:\.|^)([^\.]+)\.(?:[^\.]+)$/)[1];

这仅匹配主机名的最后两部分,并且仅捕获倒数第二部分。

(?:\.|^)   -- (?: ... ) is a non-capture group (eg. not kept in your match)
           -- \.|^  matches a dot or the start of the string
([^\.]+)   -- capture  all characters that are not a dot
\.         -- matches a dot
(?:[^\.]+) -- non-capture - "all characters that are not dots"
$          -- match end of string

如果没有正则表达式,您可以执行以下操作(根据@Pointy建议的@cade-galt的评论):

var a = window.location.hostname, b = a.split('.'), c = b[b.length-2];

答案 1 :(得分:0)

您也可以使用单线解决方案:

location.hostname.replace("."+location.hostname.split(".").pop(), "").split(".").pop()