Я пытаюсь получить последнюю часть этого URL:

http://webserver/Foo/login/

Код, который я написал:

var location = window.location.href.split('/').pop();

Вернет пустую строку, потому что после / ничего нет. Мне нужно получить хотя бы предыдущую часть, поэтому в этом случае войдите.

Как я могу это сделать?

1
AgainMe 13 Дек 2016 в 20:15

3 ответа

Лучший ответ

Решение с использованием String.replace() (используется для замены возможных / в конце строки) и String.split() функций:

var url = 'http://webserver/Foo/login/',
    last_section = url.replace(/\/+$/, '').split('/').pop();
    
console.log(last_section);
2
RomanPerekhrest 13 Дек 2016 в 17:27
const getLastPartURL = url => {
  const parts = url.split('/');
  const length = parts.length;
  return parts[length - 1] == '' ? parts[length - 2] : parts[length - 1]
}

console.log(getLastPartURL('http://webserver/Foo/login/'))
console.log(getLastPartURL('http://webserver/Foo/login'))
console.log(getLastPartURL('http://webserver/Foo/'))
console.log(getLastPartURL('http://webserver/Foo'))
1
GG. 13 Дек 2016 в 17:31

Это должно сделать трюк:

location.pathname.match(/[^/]*(?=\/*$)/)[0]

< Сильный > Объяснение :

< Сильный > Пример:

Для всех этих URL выводится login:

  • http://webserver/Foo/login
  • http://webserver/Foo/login/
  • http://webserver/Foo/login//
0
xehpuk 15 Дек 2016 в 19:44