Javascript 如何在使用普通URL的代理中获取目标站点的第一个子域

Javascript 如何在使用普通URL的代理中获取目标站点的第一个子域,javascript,regex,url,uri,Javascript,Regex,Url,Uri,如果有人想要当前站点的最后一个子域(例如:在ftp.kernel.org中获取ftp),可以使用 location.hostname.split('.')[0] 但是,使用非模糊代理,URL可以是这样的http://www.someproxy.com/somepath_layers/site.bin?http://ftp.kernel.org/pub/iso 然后,location.hostname将返回代理地址。location.pathname将删除目标地址,因此我只看到一个普通的loca

如果有人想要当前站点的最后一个子域(例如:在
ftp.kernel.org
中获取
ftp
),可以使用

location.hostname.split('.')[0]
但是,使用非模糊代理,URL可以是这样的
http://www.someproxy.com/somepath_layers/site.bin?http://ftp.kernel.org/pub/iso

然后,
location.hostname
将返回代理地址。
location.pathname
将删除目标地址,因此我只看到一个普通的
location.href

要点是在
http://
之后去掉前面的内容,但是如果代理也可以安全地访问,那么URL就会变成
https://www.someproxy.com/somepath_layers/site.bin?http://ftp.kernel.org/pub/iso

那么,在JavaScript中包含的最后一个模式出现之前,我如何进行匹配?(目的是使网站在web.archive.org liveweb中工作)


更新:我还需要正则表达式在没有代理的情况下工作(直接访问站点时)。

此正则表达式提取第一个子域:

/(?!(?:https?|ftps?):\/\/)\b([a-z][^.]+).*/ig
子域位于捕获组1中


每个代理都有不同的语法,我不认为你可以制定一个一般规则。@Barmar:我在问题中说,我想让事情只适用于web.archive.org或重复目标站点完整URL的代理,如或。我想我应该将其与
location.href.match()
一起使用,不是吗?您的链接返回
www
with
https://www.someproxy.com/somepath_layers/site.bin?http://ftp.kernel.org/pub/iso
而不是
ftp