查询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
,但当然,你将不得不取代?
背部。 你可以捕捉它,并使所有其他分组不被捕获?:
。