【问题标题】:Get last two params of an URL - javascript获取 URL 的最后两个参数 - javascript
【发布时间】:2019-02-11 13:18:55
【问题描述】:
我的网址是这样的
stackoverflow.com/questions/ask/format/return
我只需要从上面的 URL 获取 format/return。我能够将完整的 URL 分配给变量。目前我正在split做这件事
url.split("/")[4]
url.split("/")[5]
这不是通用的。实现这一目标的更好方法是什么?
【问题讨论】:
标签:
javascript
arrays
url
split
slice
【解决方案1】:
var parts = url.split("/");
lastTwo = [parts.pop(), parts.pop()].reverse().join("/");
【解决方案2】:
查找最后一个和倒数第二个值:
let spl = url.split("/");
alert(spl[spl.length-2]+' and '+spl[spl.length-1]);
【解决方案3】:
只需使用长度来帮助您从末尾开始索引:
var res = url.split('/')
var last = res[res.length-1]
var pre_last = res[res.length-2]
【解决方案4】:
基因解决方案,
Var URL = url.split("/"); //
Last = URL[URL.length-1]; // 返回
LastBefore = URL[URL.length-1]; //格式
url = "stackoverflow.com/questions/ask/format/return"
URL = url.split("/");
console.log(URL[URL.length-1]) // return
console.log(URL[URL.length-2]) //format
【解决方案5】:
我会将 url 解析为 URL,然后在路径名上使用 match。这样,如果您的网址中有任何搜索参数(?foo=bar),它也将起作用
const s = "https://stackoverflow.com/questions/ask/format/return";
const uri = new URL(s);
const m = uri.pathname.match(/([^\/]*)\/([^\/]*)$/);
console.log(m);
请注意,您将获得一个包含三个条目的数组 - 0 是组合路径,1 是第一个参数,2 是最后一个参数。
【解决方案6】:
执行此操作的最短、最简洁的方法是在拆分后的 URL 上使用 slice:
url.split("/").slice(-2).join("/")
【解决方案7】:
您可以使用简单的regex /.*\/(.*\/.*)/) 准确提取您想要的内容。
str.match(/.*\/(.*\/.*)/).pop()
var str = "stackoverflow.com/questions/ask/format/return",
res = str.match(/.*\/(.*\/.*)/).pop();
console.log(res);