Простой вопрос о регулярных выражениях - PullRequest
1 голос
/ 19 мая 2011

Я хочу удалить это из строки URL http://.....?page=1 Я знаю, что это не работает, но мне было интересно, как бы вы сделали это правильно.

document.URL.replace("?page=[0-9]", "")

Спасибо

Ответы [ 4 ]

4 голосов
/ 19 мая 2011

Похоже, вы хотите избавиться от протокола и строки запроса.Так как насчет простого объединения оставшихся частей?

var loc = window.location;

var str = loc.host + loc.pathname + loc.hash;

http://jsfiddle.net/9Ng3Z/


Я не совсем уверен, каковы требования, но это довольно простое выражение работает.

loc.replace(/https?\:\/\/([^?]+)(\?|$)/,'$1');

Это может быть наивная реализация, но попробуйте и посмотрите, подходит ли она вам.

http://jsfiddle.net/9Ng3Z/1/

2 голосов
/ 19 мая 2011

? - это специальный символ регулярного выражения.Вы должны избежать этого для буквального ?.Также используйте литералы регулярных выражений .

document.URL.replace(/\?page=[0-9]/, "")
1 голос
/ 19 мая 2011

Ответ от @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"
0 голосов
/ 19 мая 2011

Ты супер близко.Чтобы получить URL-адрес, используйте location.href и убедитесь, что экранируйте знак вопроса.

var URL = location.href.replace("\?page=[0-9]", "");
location.href = URL; // and redirect if that's what you intend to do

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

var URL = location.href.replace("\?.*", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...