-1

変数自体に「&」文字が含まれている可能性があるクエリ文字列変数に URI を分割するために、JavaScript 正規表現をどのように記述できますか?

現在、次のコードを使用していますが、変数のいずれかに & が埋め込まれている場合、その変数の残りはキャプチャされません。これはどのように軽減できますか?

function uriParameters() {
  var vars = {};
  var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
    vars[key] = value;
  });
  return vars;
}
4

2 に答える 2

2

簡単な質問: これからどのような変数を期待しますか?

a=b&c&d=e

それは...ですか ?

a=b&c, d=e     //or 
a=b  , c , d=e

したがって、あいまいさがあり、一連の名前がないと問題を解決できませ

更新:クエリ文字列にname=valueペアのみが含まれ、単一のnameパラメーターがない場合は、以下のスクリプトでそれらのペアを抽出できます。

 function getUriParameters( uri ){
     //Some sequence of chars that can't be matched in query string
     var SYN = ",,,";
     var vars = {};
     uri.split("=")
        .map(function(value){    //Replacing last '&' by SYN value
            return value.replace(/&([^&]*)$/,SYN+'$1');
        })
        .join("=")               //Restoring uri
        .split(SYN)              //
        .forEach(function(v){    //Storing 'key=value' pairs
             vars[v.split('=')[0]] = v.split('=')[1];
             //       key                 value
        });
     return vars;
 }
 //Usage-> getUriParameters("a=b&c&d=e")
 //Sample
 console.log( JSON.stringify(getUriParameters("a=b&c&d=e")) );
 //output -> {"a":"b&c","d":"e"}
于 2012-07-03T06:37:37.920 に答える
1

&URL を複数の変数に分割するための特殊文字です。値の場合は、エンコードされます。

また、パラメーターを処理する完全な関数については、この回答を参照してください: How can I get query string values in JavaScript?

于 2012-07-03T06:38:17.630 に答える