Js正则匹配提取url的参数值 http://www.nowcoder.com?key=1&key

Js正则匹配提取url的参数值
http://www.nowcoder.com?key=1&key=
2&key=3&test=4#hehe
如何通过key参数获取它的值为[1,2,3],如何写方法?function getparam(url,’key’){
//todo
}

代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>index</title>

</head>

<body>

<script>

var str = "http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe";

var patt1 = /key=\d/ig; //匹配key=开头,后面匹配一个数字 i表示忽略大小写 g表示尽可能多的匹配

document.write("用正则表达式取值为:" + str.match(patt1));

document.write("<br />")

var arr = str.match(patt1);

var result = [];

console.log(str.match(patt1)) // [key=1,key=2,key=3]

for (var i = 0; i < arr.length; i++) {

result.push(parseInt(arr[i].substr(4, 1)));

}

document.write("最终的结果为:[" + result + "]");

</script>


</body>

</html>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-27
正则 key=\d
提出出3个值,再right取最后一个字符即可。
第2个回答  2019-08-27
function getUrlParam(sUrl, sKey) {

var param = sUrl.split('#')[0].split('?')[1];

if (sKey){//指定参数名称

var strs = param.split('&');

var arrs = new Array();//如果存在多个同名参数,则返回数组

for(var i = 0, len = strs.length; i < len; i++){

var tmp = strs[i].split('=');

if(tmp[0] == sKey){

arrs.push(tmp[1]);

}

}

if (arrs.length == 1){//返回该参数的值或者空字符串

return arrs[0];

} else if (arrs.length == 0){

return "";

} else {

return arrs;

}

} else {//不指定参数名称,返回全部的参数对象 或者 {}

if(param == undefined || param == ""){

return {};

} else {

var strs = param.split('&');

var arrObj = new Object();

for(var i = 0, len = strs.length; i < len; i++){

var tmp = strs[i].split('=');

if (!(tmp[0] in arrObj)) {

arrObj[tmp[0]] = [];

}

arrObj[tmp[0]].push(tmp[1]);

}

return arrObj;

}

}

}
相似回答
大家正在搜