我如何在javascript中获取主机名后的所有内容?
到目前为止,这是我的正则表达式,但我现在需要在从第一个/
开始直到字符串结束时捕获。
https?\:\/\/(.*)
字符串
http://www.myurl.com/en/country/belgium/
因此对于我需要捕获的字符串:
/ EN /国家/比利时/
即使在阅读了正则表达式后,如果有人花了几分钟时间为我提供一个非常好的例子,我一直在玩弄这个例子。
修改
要明确我在这里使用document.referrer
,据我所知,document.location
之类的帮助没有这样做。
答案 0 :(得分:3)
您应该使用var url = new URL('http://www.myurl.com/en/country/belgium/');
console.log(url.pathname); // /en/country/belgium/
url;
/*
URL {
hash: "",
host: "www.myurl.com",
hostname: "www.myurl.com",
href: "http://www.myurl.com/en/country/belgium/",
origin: "http://www.myurl.com",
password: "",
pathname: "/en/country/belgium/",
port: "",
protocol: "http:",
search: "",
searchParams: URLSearchParams {},
username: ""
}
*/
类:
var url = new URL("http://www.myurl.com/en/country/belgium/");
console.log(url.pathname);
答案 1 :(得分:2)
由于您需要在字符串中解析网址,因此可以使用正则表达式。
http[s]*
匹配。这将检查http
和https
://
/
并接受其后的任何内容。
var str = 'http://www.myurl.com/en/country/belgium/';
var pathNameRegex = /http[s]*:\/\/[^\/]+(\/.+)/;
var matches = str.match(pathNameRegex);
console.log(matches[1]);
答案 2 :(得分:2)
使用网址对象。
URL
更新:
使用锚标记来填充URL(我不确定这是if (typeof URL === 'undefined') {
var URL = function(url) {
var a = document.createElement('a');
a.href = url;
return a;
}
}
var url = new URL('https://www.example.com/pathname/');
var path = url.pathname;
所做的每一次的完整填充,但应该足够你的任务):
def left_truncnorm_logpdf(x, untruncated_mean, untruncated_std_dev, left_cutoff):
f = np.array(np.subtract(stats.norm.logpdf(x, loc=untruncated_mean, scale=untruncated_std_dev),
np.log(1 - stats.norm.cdf(left_cutoff, loc=untruncated_mean, scale=untruncated_std_dev))))
f[x < left_cutoff] = -np.inf
return f
答案 3 :(得分:1)
只需创建一个锚点,让浏览器解析它。随处可见
var a = document.createElement('a');
a.href = 'http://www.myurl.com/en/country/belgium/'; // or document.referrer
var path = a.pathname;
console.log(path);
答案 4 :(得分:0)
如果没有正则表达式,您可以使用以下内容:
var pathArray = location.href.split( '/' );
var protocol = pathArray[0];
var host = pathArray[2];
var baseUrl = protocol + '//' + host;
var nonBaseUrl = window.location.href.replace(baseUrl, '');
答案 5 :(得分:0)
您可以通过简单的替换来实现这一目标。
var url = 'http://www.myurl.com/en/country/belgium/';
var path = url.replace(/https?:\/\/[^\/]+/g,'');
console.log(path);//prints /en/country/belgium/
但是如果你想捕获路径,你可以使用与捕获组相同的正则表达式
var url = 'http://www.myurl.com/en/country/belgium/';
var regex = /https?:\/\/[^\/]+(.*)/g;
var match = regex.exec(url);
console.log(match[1]); //prints /en/country/belgium/
答案 6 :(得分:-1)
我建议:
/https?:\/\/[^\s\/]*(\/\S*)/
[^\s\/]
是一个排除空格和斜杠的字符类。
\S
是一个速记字符类,匹配除空格之外的所有字符。
请注意,:
不是特殊字符,不需要转义。