正则实战应用技巧:获取URL地址栏的参数
2016-07-02 21:47:34

567
在真实的项目中,我们经常使用URL传参的方式实现两个页面之间的通信,例如:A页面是一个列表页面,B页面是一个详细页面,我们点击列表中的每一条纪录都会跳转到同一个详细页面,这样就需要我们在详细页面区分具体点击的是那一条纪录,遇到这样的情况,我们通常会在跳转的URL地址后面加上对应的标识,例如:b.html?id=12&name=zhufeng#peixun;当加载B页面的时候,我么首先获取地址栏中URL后面的参数值,然后根据不同的值获取不同的数据最后展示在页面上。
今天我们就使用两种方法把问号后面的参数值都获取到。
方法一:字符串拆分法
这种方式操作起来代码比较的繁琐,也不利于后期的维护和扩展,但是是目前市场上最通用的方法之一。(不要问我为啥,因为大部分公司都不会正则处理 (*^__^*) 嘻嘻……)
String.prototype.queryURLParameter = function () {
//->获取截取的开始和结束索引
var strIndex = this.indexOf("?"),
endIndex = this.lastIndexOf("#"),
resStr = "";
//->检测字符串中是否包含?和#
if (strIndex > -1) {
if (endIndex === -1) {
resStr = this.substring(strIndex + 1);
} else {
resStr = this.substring(strIndex + 1, endIndex);
}
}
//->开始进行字符串的拆分和拼接
var ary = resStr.split("&"),
obj = {};
for (var i = 0; i < ary.length; i++) {
var cur = ary[i],
curAry = cur.split("=");
obj[curAry[0]] = curAry[1];
}
return obj;
};
console.log(str.queryURLParameter()); //->{id:12,name:'zhufeng'}
方法二:正则捕获法
使用正则可以有效的减少很多开发的代码,不仅仅提高了开发的效率,而且后期的扩展性也非常的好。以下我们用到了replace方法,replace还可以处理很多的需求,例如:“格式化时间字符串”等
String.prototype.queryURLParameter = function () {
var obj = {},
reg = /([^?=]+)=([^?=]+)/g;
this.replace(reg, function () {
var key = arguments[1],
value = arguments[2];
obj[key] = value;
});
return obj;
};
console.log(str.queryURLParameter()); //->{id:12,name:'zhufeng'}
如果想学习到更多实战的技巧,敬请关注 珠峰培训技术资料 。同时也欢迎大家参加珠峰培训JS+HTML5+NODE的一系列前端开发课程,在这里你能学到从基础到深入JS编程,也能学到当下最火的HTML5移动端开发、以及最前沿的框架和NODE...