Получение определенной части URL с использованием Javascript

У меня есть несколько URL-адресов, которые мне нужны, чтобы получить определенную часть последней части URI

Если у меня есть URL www.test.co/index.php/government-printer-sales.html Мне нужно только получить government из URL. Все URL-адреса находятся в одной структуре, так что если у меня есть www.test.co/index.php/management-fees.html Мне нужно получить слово management

Я попробовал следующее

var str = document.URL.split('/');
 var type = str[5].split('-',1);

что дает мне некоторый результат, но я уверен, что есть лучший способ. Если есть в любом случае, я могу получить это из Eiter MooTools или просто Javascript

4 ответа

Вы можете использовать регулярное выражение, чтобы вытащить строку после последней косой черты и перед первой чертой:

var regex = /\/([^/\-]+)[^/]*$/;
var matches = regex.exec('www.test.co/index.php/government-printer-sales.html');
var type = matches[1];  // government

Вы можете посмотреть здесь, а затем здесь, а затем проверить этот код:

var myString = "www.test.co/index.php/government-printer-sales.html";
var myRegexp = /(www.test.co\/index.php\/)(\w+)-(.)*/g;
var match = myRegexp.exec(myString);
alert(match);

Splice - отличная функция, передающая отрицательное число, так как первый аргумент создаст новый массив с элементами, считающими с конца массива.

document.URL
> "http://stackru.com/questions/7671441/getting-a-specific-part-of-a-url-using-javascript"

document.URL.split('/').splice(-1)[0].split('-')[0]
> "getting"

Это похоже на сплайсинг списка Python lst[:-1]

Попробуй это:

var type = window.location.pathname.match(/index.php\/([^-]+)(?:-)/)[1];

Он ищет любые символы, следующие index.php/ исключая дефис, но за которым следует один дефис и извлекает значение между ними.

Другие вопросы по тегам