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モジュールが組み込まれています。

それはあなたが必要とすることをするように見える解析メソッドを持っています:

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 に答える