我想从url字符串中删除它
http://.....?page=1
我知道这不起作用,但我想知道你将如何正确地做到这一点。
document.URL.replace("?page=[0-9]", "")
由于
答案 0 :(得分:4)
好像你想要摆脱协议和查询字符串。那么如何将其余部分连接起来呢?
var loc = window.location;
var str = loc.host + loc.pathname + loc.hash;
我不完全确定要求是什么,但这个相当简单的正则表达式可以工作。
loc.replace(/https?\:\/\/([^?]+)(\?|$)/,'$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("\?.*", "");