简单的正则表达式问题

时间:2011-05-19 02:41:58

标签: javascript regex replace

我想从url字符串中删除它 http://.....?page=1 我知道这不起作用,但我想知道你将如何正确地做到这一点。

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

由于

4 个答案:

答案 0 :(得分:4)

好像你想要摆脱协议和查询字符串。那么如何将其余部分连接起来呢?

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/

答案 1 :(得分:2)

?是一个正则表达式的特殊字符。您需要为文字?转义它。也可以使用regular expression literals

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

答案 2 :(得分:1)

@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"

答案 3 :(得分:0)

你非常接近。要获取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("\?.*", "");