Получить последние два параметра URL - JavaScript - PullRequest
0 голосов
/ 06 сентября 2018

Мой URL выглядит так

stackoverflow.com/questions/ask/format/return

Мне нужно получить только format/return по указанному выше URL. Я могу назначить полный URL-адрес переменной. В настоящее время я делаю это на split

url.split("/")[4]
url.split("/")[5]

И это не универсальный. Какой лучший способ добиться этого?

Ответы [ 7 ]

0 голосов
/ 06 сентября 2018

Самый короткий и чистый способ сделать это - использовать slice на разделенном URL:

url.split("/").slice(-2).join("/")
0 голосов
/ 19 сентября 2018

Вы можете использовать простое регулярное выражение /.*\/(.*\/.*)/), чтобы извлечь именно то, что вы хотите.

str.match(/.*\/(.*\/.*)/).pop()

var str = "stackoverflow.com/questions/ask/format/return",
  res = str.match(/.*\/(.*\/.*)/).pop();
  
console.log(res);
0 голосов
/ 06 сентября 2018

Я бы проанализировал URL-адрес URL-адреса, а затем использовал сопоставление в имени пути. Таким образом, это также будет работать, если у вас есть какие-либо параметры поиска (?foo=bar) в вашем URL

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 - последний параметр.

0 голосов
/ 06 сентября 2018

Генетическое решение,

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

Last = URL[URL.length-1]; // return

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
0 голосов
/ 06 сентября 2018

Просто используйте длину, чтобы помочь вам индексировать с конца:

var res = url.split('/')
var last = res[res.length-1]
var pre_last = res[res.length-2]
0 голосов
/ 06 сентября 2018

Ищите последние и предпоследние значения:

let spl = url.split("/");
alert(spl[spl.length-2]+' and '+spl[spl.length-1]);
0 голосов
/ 06 сентября 2018
var parts = url.split("/");
lastTwo = [parts.pop(), parts.pop()].reverse().join("/");
...