私がこのようなURLを持っているとき:
http://server/site?firstname=Jack&lastname=Daniels
私のJavaScriptでは、名のクエリは「Jack」を返す必要があることを理解しています。
ただし、次の場合、名のクエリは何を返す必要がありますか。
http://server/site?lastname=Daniels
http://server/site?firstname&lastname=Daniels
http://server/site?firstname=&lastname=Daniels
[編集]いくつかのコメントに答えるために:上記のすべては正当なクエリ文字列です。私の質問は、パラメータを取得する方法ではなく、それらを解釈する方法についてです。
記録のために、すべてのケースをカバーする次の正規表現を使用してクエリ文字列を解析します。
/([^?=&;]+)(?:=([^&;]*))?/g
どうやらクエリ文字列パラメータを取得する方法について非常に人気のある質問がありますが、答えは正しくありません(または少なくともエッジケースに対処していません)。
[更新]@Bergiと@zzzzBovからの回答に基づく私の選択:
http://server/site?lastname=Daniels => firstname: undefined
http://server/site?firstname&lastname=Daniels => firstname: true
http://server/site?firstname=&lastname=Daniels => firstname: ""
http://server/site?firstname=Jack&lastname=Daniels => firstname: "Jack"
副作用は、上記のルールと同様に、正規表現をわずかに変更する必要があっ=
たことです。サインをキャプチャする必要があります。
/([^?=&;]+)(=[^&;]*)?/g