获取URL的最后两个参数 - JavaScript

3

我的网址看起来像这样

stackoverflow.com/questions/ask/format/return

我需要从上面的URL中仅获取format/return。我可以将完整的URL分配给一个变量。目前我正在使用split进行操作。
url.split("/")[4]
url.split("/")[5]

而且这不是通用的。有什么更好的方法来实现这个?
7个回答

3

最简单、最清晰的方法是使用 slice 函数对分离出来的 URL 进行处理:

url.split("/").slice(-2).join("/")

2

只需使用长度即可帮助您从末尾进行索引:

var res = url.split('/')
var last = res[res.length-1]
var pre_last = res[res.length-2]

1

一种基因解决方案,

Var URL = url.split("/"); //

Last = URL[URL.length-1]; // 返回

LastBefore = URL[URL.length-1]; //format

url = "stackoverflow.com/questions/ask/format/return"

URL = url.split("/"); 
console.log(URL[URL.length-1]) // return 
console.log(URL[URL.length-2]) //format


0
寻找最后一个和倒数第二个值:
let spl = url.split("/");
alert(spl[spl.length-2]+' and '+spl[spl.length-1]);

0
你可以使用一个简单的正则表达式 /.*\/(.*\/.*)/ 来精确提取你想要的内容。
str.match(/.*\/(.*\/.*)/).pop()

var str = "stackoverflow.com/questions/ask/format/return",
  res = str.match(/.*\/(.*\/.*)/).pop();
  
console.log(res);


0
我会将URL解析为一个URL对象,然后在路径名上使用match方法。这样做的好处是,即使你的URL中有任何搜索参数(例如?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表示最后一个参数。

-1
var parts = url.split("/");
lastTwo = [parts.pop(), parts.pop()].reverse().join("/");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接