我试图获取此网址的最后一部分:
var location = window.location.href.split('/').pop();
我写的代码:
/
将返回一个空字符串'因为term = `label:none author:@root label:~"To+Do" label:~'"test me"' label:~"No Label" label:~'won"t fix' this is a search term`
re = /(\w+):([~%@]?)(?:"(.*?)"|'(.*?)'|(\S+))/g;
opts = [];
term = term.replace(re, function (_, prop, operator, v1, v2, v3) {
opts.push({prop, operator, value: v1 || v2 || v3});
return '';
});
opts.push({search: term.trim()});
console.log(opts);
之后什么也没有。
我需要至少获得前一部分,所以在这种情况下,登录。
我该怎么做?
答案 0 :(得分:2)
使用String.replace()
(用于替换字符串末尾可能的/
)和String.split()
函数的解决方案:
var url = 'http://webserver/Foo/login/',
last_section = url.replace(/\/+$/, '').split('/').pop();
console.log(last_section);
答案 1 :(得分:1)
const getLastPartURL = url => {
const parts = url.split('/');
const length = parts.length;
return parts[length - 1] == '' ? parts[length - 2] : parts[length - 1]
}
console.log(getLastPartURL('http://webserver/Foo/login/'))
console.log(getLastPartURL('http://webserver/Foo/login'))
console.log(getLastPartURL('http://webserver/Foo/'))
console.log(getLastPartURL('http://webserver/Foo'))
答案 2 :(得分:0)
这应该可以解决问题:
location.pathname.match(/[^/]*(?=\/*$)/)[0]
<强>解释强>
Location.pathname
是一个包含初始'/'
后跟path of the URL的字符串。String.prototype.match(regexp)
返回一系列匹配项。[^/]*
匹配anything but a slash,zero or more times。(?=\/*$)
匹配斜杠零次或多次at the end of the string,while not including it。[0]
检索它。示例:强>
对于所有这些网址,输出为login
:
http://webserver/Foo/login
http://webserver/Foo/login/
http://webserver/Foo/login//