2012-01-27 2 views
0

У меня есть этот URL http://www.something.com/category иjavascript: найти второе последнее появление строки внутри строки?

top.location.href.substr(0, top.location.href.lastIndexOf("/")); 

возвращает http://www.something.com

Однако, если у меня есть URL http://www.something.com/category/something как я могу снова получить http://www.something.com путем удаления 2-ой последний вид "/" ...

Любые идея? Я знаю, что есть такие вещи, как top.location.origin. Мне нужен способ вырезать последние две «косынки»!

+0

Когда следующий URL-адрес приходит по адресу www.something.com/category/something/things/', то что? Я считаю, что ваш вопрос заключается в том, как получить URL-адрес без путей. – TJHeuvel

+0

'var foo = url.split ('/', 3) .join ('/');' – Yoshi

+0

вы пытаетесь разобрать общий URL-адрес или собираетесь использовать объект window.location? – zzzzBov

ответ

1

Поскольку вы работаете с location объекта, использование:

location.protocol + '//' + location.host + '/'; 
// On this page, it shows: http://stackoverflow.com/ 
// Include pathname: 
location.protocol + '//' + location.host + location.pathname + '/'; 

Для вашего собственного решения, вы можете добавить +1 ко второму аргументу:

top.location.href.substr(0, top.location.href.lastIndexOf("/")+1); 
                   ^^ Hi Plus One! 

ответ на обновленный вопрос (см OPs):

var href = top.location.href.replace(/(\/[^\/]+){2}\/?$/, ''); 
+0

@OP - документы - ваши друзья =). https://developer.mozilla.org/en/DOM/window.location – mrtsherman

0

Вместо того, чтобы идти назад, a имеют переменное количество индексов, почему бы не перейти вперед, где вы знаете, что будет только 2 впереди?

var url = top.location.href; 
var index1 = url.indexOf('/'); 
var index3 = url.indexOf('/', index1 + 2); 
var final = url.substr(0, index3);