查询string的正则expression式

我有一个正则expression式的function,我认为工作中删除查询string中的页面variables。 现在它工作正常,如果variables不是第一,但是如果该variables是第一个variables,它不捕获?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 

任何人都知道如何解决这个正在使用的正则expression式?

如果你想parsing一个完整的url,node.js有一个内置的url模块。

它有一个parsing方法,似乎做你所需要的:

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

这个问题回答了如何将其构build回url,并显示一个使用示例。

你也有一个内置的querystring模块。

你可以使用querystring.parse

 querystring.parse('foo=bar&baz=qux&baz=quux&corge') // returns { foo: 'bar', baz: ['qux', 'quux'], corge: '' } 

而不是^page应该是\?page ,但当然,你将不得不取代? 背部。 你可以捕捉它,并使所有其他分组不被捕获?: