2013-03-25 39 views
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

如果你想分析整个网址,node.js有一个内置的url模块。

它似乎做你所需要的解析方法:

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

This question回答怎样建设回一个网址,如果你愿意,并显示了使用示例。

您还有一个内置的querystring模块。

您可以使用querystring.parse

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

比我之前做的要好得多。我很确定我试过这个,并且由于某种原因它失败了,可能我没有从解析的URL中删除搜索。我有两个问题,现在我没有。谢谢! – 2013-03-25 20:38:44

1

相反的^page应该\?page,当然你将不得不更换?回来。您可以捕获它并使所有其他分组与?:不捕获。

+0

应该指出,我有关于零适用的正则表达式的经验,除了从互联网上偷东西。感谢您的帮助! – 2013-03-25 20:39:40

相关问题