2013-03-25 38 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

相關問題