获取网址的最后一部分

时间:2016-08-19 14:58:17

标签: javascript jquery

我正在尝试提取这样的最后一段网址:

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();

3 个答案:

答案 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字符。因此,您可以调整正则表达式以匹配您想要的内容。