我在javascript方面遇到了一些困难。我目前正在制作一个分页队长。
function skip(s)
{
var url = window.location.toString();
if(location.href.match(/(\?|&)currentpage=x($|&|=)/))
{
url=url.replace('currentpage=x','currentpage='+s);
window.location=url;
}
else
{
var newUrl = url+"¤tpage="+s;
window.location=newUrl;
}
}
我希望x匹配任何整数,因此整个字符串将被替换。
谢谢!
答案 0 :(得分:0)
您可以使用以下代码
function addParameter(url, param, value) {
// Using a positive lookahead (?=\=) to find the
// given parameter, preceded by a ? or &, and followed
// by a = with a value after than (using a non-greedy selector)
// and then followed by a & or the end of the string
var val = new RegExp('(\\?|\\&)' + param + '=.*?(?=(&|$))', 'i'),
qstring = /\?.+$/;
// Check if the parameter exists
if (val.test(url)) {
// if it does, replace it, using the captured group
// to determine & or ? at the beginning
return url.replace(val, '$1' + param + '=' + value);
}
else if (qstring.test(url)) {
// otherwise, if there is a query string at all
// add the param to the end of it
return url + '&' + param + '=' + value;
}
else {
// if there's no query string, add one
return url + '?' + param + '=' + value;
}
}
用法,
function skip(s) {
window.location = addParameter(location.href, "currentpage", s);
}
答案 1 :(得分:0)
你正在寻找的正则表达式是这样的:
/((\?|&)currentpage=)\d+/
匹配并捕获 ?|¤tpage=
,并匹配后面的数字,但不捕获它们。然后,您可以使用您选择的字符串替换整个匹配项:
var newUrl = location.href.replace(/([?&]currentpage=)\d+/, '$1'+s);
假设s
这里是currentpage
的值,您想要替换示例中的 x 。我已将(\?|&)
替换为字符类:[?&]
。它只是匹配一个单个字符?或者&amp ;.在替换字符串中,我使用$1
反向引用匹配的组([?&] currentpage =),并将s
连接到它。就这么简单。重定向:
location.href = location.href.replace(
/([?&]currentpage=)\d+/,
'$1' + s
);
你有家的自由。在你的控制台中尝试一下,如下:
'http://www.example.com/page?param1=value1¤tpage=123¶m2=foobar'.replace(
/([?&]currentpage=)\d+/,
'$1124'//replaced + s with 124
);
//output:
//"http://www.example.com/page?param1=value1¤tpage=124¶m2=foobar"