RegExpはurlパラメータを取得します.


urlのパラメータを取得する必要があります.
  • は、パラメータ名を指定し、そのパラメータの値または空の文字列
  • を返します.
  • はパラメータ名を指定せずに、すべてのパラメータオブジェクトまたは{}
  • を返します.
  • 同名のパラメータが複数存在する場合、
  • に戻る.
    IN
    http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe
    アウト[1, 2, 3]解析
  • は、indexOf、プッシュ方法の戻り値
  • に注意する.
  • は、split、sliceなどのjs方法で文字列
  • を処理する.
  • 正規マッチングRegExpパケット捕獲
  • concatは、レプリカ配列、reg.exec()を生成し、レギュレータ量子捕獲RegExp.$n
  • を生成する.
    解法1
    function getUrlParam(sUrl, sKey) {
        var s = sUrl,
            o = {}
    
        //   
        var q = s.indexOf('?') > -1 ? s.slice(s.indexOf('?') + 1) : ''
        q = q.indexOf('#') > -1 ? q.slice(0, q.indexOf('#')) : q
    
        //   
        if (q) {
            var brr = q.split('&'),
                e
            for (var i in brr) {
                e = brr[i].split('=')
    
                if (o[e[0]]) {
                    o[e[0]].push(e[1])
                } else {
                    o[e[0]] = [e[1]]
                }
            }
            //    
            for (var i in o) {
                o[i] = o[i].length == 1 ? o[i][0] : o[i]
            }
        }
    
        return sKey ? (o[sKey] ? o[sKey] : '') : o
    
    }
    
    濃縮版
    function getUrlParam(sUrl, sKey) {
        var obj = {};
        var reg = /[?&](\w+)=(\w+)/g;
        while (reg.exec(sUrl))
            // concat                 
            obj[RegExp.$1] ? obj[RegExp.$1] = [].concat(obj[RegExp.$1], RegExp.$2) : obj[RegExp.$1] = RegExp.$2;
        return sKey ? obj[sKey] || "" : obj;
    }