Как убрать все параметры и доменное имя из URL, используя JavaScript? - PullRequest
1 голос
/ 06 августа 2009

Учитывая серию URL

http://www.anydotcom.com/myfolder/some-url.html
http://www.anydotcom.com/myfolder2/index.html#
http://www.anydotcom.com/myfolder3/index.html?someParam=aValue
http://www.anydotcom.com/foldername/index.html?someParam=anotherValue

Во-первых, как я могу удалить что-либо с конца URL, чтобы я получил

http://www.anydotcom.com/myfolder/some-url.html
http://www.anydotcom.com/myfolder2/index.html
http://www.anydotcom.com/myfolder3/index.html
http://www.anydotcom.com/foldername/index.html

или, в идеале, я бы хотел вернуть

/myfolder/some-url.html
/myfolder2/index.html
/myfolder3/index.html
/foldername/index.html

Я пытался

    var thisUrl = "" + window.location;
    var myRegExp = new RegExp("([^(\?#)]*)");
    thisUrl = myRegExp.exec(thisUrl);

но это возвращает

http://www.anydotcom.com/foldername/index.html,http://www.anydotcom.com/foldername/index.html

и я не совсем понимаю, почему.

Я ценю любую помощь здесь!

Ответы [ 4 ]

2 голосов
/ 06 августа 2009

Ну, чтобы прямо ответить на ваш вопрос, вот регулярное выражение для этого.

thisUrl = thisUrl.replace( /^https?:\/\/[^\/]|\?.*$/g, '' );

Однако, поскольку вы упоминаете window.location в своем коде, вы можете получить эти данные прямо из объекта location .

thisUrl = top.location.pathname;
1 голос
/ 06 августа 2009

Если вы используете window.location, вы можете просто получить доступ к требуемым данным, используя:

var thisUrl = window.location.pathname;

Если вы извлекаете материал из ссылок, следующее регулярное выражение даст вам то, что вам нужно:

// Supports all protocols (file, ftp, http, https, whatever)
var pathExtract = /^[a-z]+:\/\/\/?[^\/]+(\/[^?]*)/i;
var thisUrl = (pathExtract.exec(someUrl))[1];
0 голосов
/ 06 августа 2009

с использованием объекта window.location просто как запись:

function getPath() {
    return window.location.pathname;
}
0 голосов
/ 06 августа 2009

Объект местоположения Javascript

var loc = window.location;
var thisUrl = loc.protocol + "//" + loc.hostname + loc.pathname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...