如果您知道page=xxx
参数是已经在那里,你可以使用.replace()
:
currentPageUrl: req.originalUrl.replace(/page=[^&]+/, "page=" + currentPage)
如果您不知道自己是否是有,那么你必须首先测试它:
let newUrl;
if (req.originalUrl.indexOf("page=") !== -1) {
newUrl = req.originalUrl.replace(/page=[^&]+/, "page=" + currentPage);
} else if (req.originalUrl.indexOf("?") === -1) {
newUrl = req.originalUrl + "?page=" + currentPage);
} else {
newUrl = req.originalUrl + "&page=" + currentPage);
}
各种测试情况:
function updatePage(origUrl, currentPage) {
let newUrl;
if (origUrl.indexOf("page=") !== -1) {
newUrl = origUrl.replace(/page=[^&]+/, "page=" + currentPage);
} else if (origUrl.indexOf("?") === -1) {
newUrl = origUrl + "?page=" + currentPage;
} else {
newUrl = origUrl + "&page=" + currentPage;
}
return newUrl;
}
// test cases
console.log(updatePage("http://somedomain.com/somePath?page=3", 5));
console.log(updatePage("http://somedomain.com/somePath?whatever=something&page=3", 5));
console.log(updatePage("http://somedomain.com/somePath", 5));
console.log(updatePage("http://somedomain.com/somePath?page=3&whatever=something", 5));
您也可以使用url
库的URL解析成其组成部分,改变其中的一部分,然后重新生成完整的URL:
const url = require('url');
let parsedUrl = url.parse(req.originalUrl, true);
parsedUrl.query.page = currentPage;
delete parsedUrl.search;
let newUrl = url.format(parsedUrl);
什么,我觉得这个工作正常在我的情况。谢谢你帮忙! – Codearts