1

我有一个正则表达式函数,我认为它可以用于删除查询字符串中的页面变量。现在,如果变量不是第一个变量,它可以正常工作,但是如果变量是第一个变量,它不会捕获 ?search=。

工作案例:

http://blahblah.com/stuff/pages/things?search=somethingURIEncoded&page=2

变成

console.log( req.url.replace(/&page(\=[^&]*)?(?=&|$)|^page(\=[^&]*)?(&|$)/, '') )
http://blahblah.com/stuff/pages/things?search=somethingURIEncoded

非工作案例:

http://blahblah.com/stuff/pages/things?page=2&search=somethingURIEncoded

变成

console.log( req.url.replace(/&page(\=[^&]*)?(?=&|$)|^page(\=[^&]*)?(&|$)/, '') )
http://blahblah.com/stuff/pages/things?page=2&search=somethingURIEncoded

有人知道如何修复我正在使用的这个正则表达式吗?

4

2 回答 2

4

如果要解析整个 url,node.js 有一个内置url模块。

它有一个 parse 方法,似乎可以满足您的需要:

url.parse(urlStr, [parseQueryString], [slashesDenoteHost])

如果您愿意,此问题回答了如何将其重新构建为 URL,并显示了一个使用示例。

您还有一个内置querystring模块。

您可以使用querystring.parse

querystring.parse('foo=bar&baz=qux&baz=quux&corge')
// returns
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }
于 2013-03-25T19:51:06.753 回答
1

而不是^page应该是\?page,但当然你必须更换?背部。您可以使用 捕获它并使所有其他分组不被捕获?:

于 2013-03-25T19:53:06.327 回答