Я хочу удалить это из строки url
http://.....?page=1
Я знаю, что это не работает, но мне было интересно, как вы это сделаете правильно.
document.URL.replace("?page=[0-9]", "")
Спасибо
Похоже, вы хотите избавиться от протокола и запроса. Так как же просто конкатенировать оставшиеся части?
var loc = window.location;
var str = loc.host + loc.pathname + loc.hash;
Я не совсем уверен, что это за требования, но это довольно простое регулярное выражение работает.
loc.replace(/https?\:\/\/([^?]+)(\?|$)/,'$1');
Это может быть наивная реализация, но попробуйте и посмотрите, подходит ли она вам.
?
является специальным символом регулярного выражения. Вам нужно избегать его для буквального ?
. Также используйте литералы регулярного выражения.
document.URL.replace(/\?page=[0-9]/, "")
Ответ от @patrick dw наиболее практичен, но если вам действительно интересно узнать о правильном выражении, то вот что я буду делать:
var trimUrl = function(s) {
var r=/^http:\/\/(.*?)\?page=\d+.*$/, m=(""+s).match(r);
return (m) ? m[1] : s;
}
trimUrl('http://foo.com/?page=123'); // => "foo.com/"
trimUrl('http://foo.com:8080/bar/?page=123'); // => "foo.com:8080/bar/"
trimUrl('foobar'); // => "foobar"
Ты очень близко. Чтобы захватить URL-адрес, используйте location.href и не забудьте оставить вопросительный знак.
var URL = location.href.replace("\?page=[0-9]", ""); location.href = URL; // and redirect if that what you intend to do
Вы также можете удалить все параметры строки запроса:
var URL = location.href.replace("\?.*", "");