Parsing an URL in JavaScript

前端 未结 3 989
说谎
说谎 2021-01-23 12:11

I need to parse url in JavaScript.

Here is my code:

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


for(var i         


        
相关标签:
3条回答
  • 2021-01-23 12:40

    If all you're trying to do is get query string name/value pairs you could do something like this:

    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]; }
        }
    }
    
    0 讨论(0)
  • 2021-01-23 12:42

    exec returns a match, or null if no match found. So you need to keep execing until it returns null.

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

    Also, you're regex is wrong, it definately needs th g switch, but I got it working using this regex:

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

    See Live example: http://jsfiddle.net/GyXHA/

    0 讨论(0)
  • 2021-01-23 12:57
    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"]
    // }
    
    0 讨论(0)
提交回复
热议问题