-1

クエリ文字列パラメータの値を抽出するための規則式を作成しようとしています

これまでのところ、私は次のものを持ってきました:

app.getValue = function() {
  var regExp = '[&?]'+$("#token").val()+'=(.*?)[&$]';
  var re = new RegExp(regExp);
  var res = re.exec($("#url").val());
  if (!res) return '';
  return res[1] || '';
}

問題は、結果式の末尾の「$」が、入力文字列の末尾ではなく、リテラル文字として解釈されていることであると思われます。

したがって、followginクエリ文字列を使用します。

http://wines?len=10&page=500&filter=bogota and salvador&sort=name asc

トークン「sort」を探しても何も得られません。文字列の最後に「&」または「$」を追加すると、機能します...

私は何かが足りないのですか?

4

2 に答える 2

1

文字クラスグループ内で行末文字を表現できないようです。(&|$|,)代わりに、コンマ、アンペアサンド、または行末を一致させるために使用できると思います。これにより新しい一致グループが作成されますが、コードに影響はないことに注意してください。

于 2012-08-09T05:59:36.003 に答える
1

これを試して

var urlParams = {};
(function () {
    var match,
        pl     = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query  = window.location.search.substring(1);

    while (match = search.exec(query))
       urlParams[decode(match[1])] = decode(match[2]);
})();

例:

?var1=test1&var2=test2

結果:

alert(urlParams["var1"]);
于 2012-08-09T06:00:38.540 に答える