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
withhttps://www.someproxy.com/somepath_layers/site.bin?http://ftp.kernel.org/pub/iso
而不是ftp