1

JavaScript で URL を解析する必要があります。

これが私のコードです:

var myRe = /\?*([^=]*)=([^&]*)/;
var myArray = myRe.exec("?page=3&Name=Alex");


for(var i=1;i<myArray.length;i++)
{
    alert(myArray[i]);   
}

name=value残念ながら、最初のペアでしか機能しません。

コードを修正するにはどうすればよいですか?

4

3 に答える 3

4

exec一致を返すか、一致が見つからない場合は null を返します。execしたがって、 null が返されるまで ingを続ける必要があります。

var myRe = /\?*([^=]*)=([^&]*)/;
var myArray;
while((myArray = myRe.exec("?page=3&Name=Alex")) !== null)
{
  for(var i=1;i<myArray.length;i++)
  {
      alert(myArray[i]);   
  }
}

また、正規表現が間違っています。間違いgなくスイッチが必要ですが、この正規表現を使用して動作させました:

var regex = /([^=&?]+)=([^&]+)/g;

実際の例を参照してください: http://jsfiddle.net/GyXHA/

于 2011-09-02T13:15:27.777 に答える
0

クエリ文字列の名前と値のペアを取得するだけの場合は、次のようにすることができます。

function getQueryStringValue(varName) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");

    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == varName) { return pair[1]; }
    }
}
于 2011-09-02T13:20:30.270 に答える
0
var qs="da?page=3&page=4&Name=&xxx=43&page=&#adasdsadsa";
var params=qs.replace(/^.*\??/g,'').replace(/#.*/g,'').match(/[^&\?]+/g);
var args={};
if(params)for(var i=0;i<params.length;i++) {
  var propval=params[i].split('=');
  if(!args.hasOwnProperty(propval[0]))args[propval[0]]=[];
  args[propval[0]].push(propval[1]);
}

// result:
// args=== {
//   Name: [""],
//   page: ["3","4",""],
//   xxx: ["43"]
// }
于 2011-09-02T14:08:14.810 に答える