我正在尝试提取这样的最后一段网址:
localhost:15043/Maintenance/ModelDetails/3?makeId=14
和此:
//localhost:15043/Maintenance/ModelDetails/3
我使用下面的代码,但此代码在此链接中不起作用:
localhost:15043/Maintenance/ModelDetails/3?makeId=14
var last_segment = window.location.hash.split('/').pop();
答案 0 :(得分:3)
您可以使用window.location
的路径名,搜索和/或哈希部分来执行此操作。忽略解析器,因为它仅用作运行此代码的示例。
var url = "http://localhost:15043/Maintenance/ModelDetails/3?blah=abc&makeId=14#test";
function parseUrl(url) {
var a = document.createElement("a");
a.href = url;
return a;
}
var parser = parseUrl(url);
var last_segment = parser.pathname.split('/').pop();
var searchParams = parser.search.substring(1).split("&");
var lastParamValue = searchParams[searchParams.length-1].split("=")[1];
var hash = parser.hash;
console.log(last_segment);
console.log(lastParamValue);
console.log(hash);
答案 1 :(得分:2)
.+\/
replace()
不适合你吗?
var getLastSegment = function(url) {
return url.replace(/.+\//, '');
};
console.log(getLastSegment("localhost:15043/Maintenance/ModelDetails/3?makeId=14"));
console.log(getLastSegment("//localhost:15043/Maintenance/ModelDetails/3"));
答案 2 :(得分:0)
您可以在?lapply
方法中使用正则表达式。
.split()
const pattern1 = /\?|\/|\&/;
const pattern2 = /\//;
const str = 'localhost:15043/Maintenance/ModelDetails/3?makeId=14';
console.log(str.split(pattern1).pop()); // return 'makeId=14'
console.log(str.split(pattern2).pop()); // return '3?makeId=14'
会将pattern1
,?
和/
字符以及&
上的网址分开pattern2
字符。因此,您可以调整正则表达式以匹配您想要的内容。