RegExpはurlパラメータを取得します.
1514 ワード
urlのパラメータを取得する必要があります.は、パラメータ名を指定し、そのパラメータの値または空の文字列 を返します.はパラメータ名を指定せずに、すべてのパラメータオブジェクトまたは{} を返します.同名のパラメータが複数存在する場合、 に戻る.
IN
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe
アウトは、indexOf、プッシュ方法の戻り値 に注意する.は、split、sliceなどのjs方法で文字列 を処理する.正規マッチングRegExpパケット捕獲 concatは、レプリカ配列、reg.exec()を生成し、レギュレータ量子捕獲RegExp.$n を生成する.
解法1
IN
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe
アウト
[1, 2, 3]
解析解法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;
}