正则表达式提取url代码解读

function getUrlParams(param) { 
    var reg = new RegExp("(^|&)" + param + "=([^&]*)(&|$)", "i"); //定义正则表达式 
    var r = window.location.search.substr(1).match(reg);  
    if (r != null) return unescape(r[2]); 
  return null; 
}

window.location = "http://www.baidu.com?id=6&name=xiaoha&sex=male";
var name = getUrlParams("id"); //6
var age = getUrlParams("name");   //xiaoha
var sex = getUrlParams("sex"); //male

正则部分:

1、"(^|&)" :从头开始匹配‘&’     

2、"=([^&]*)(&|$)":=([^&]*)就是匹配=后面零个或多个不是&的字符,直至碰到第一个&为止,(&|$)意思就是匹配最后一个&,在正则表达式中,增加一个()代表着匹配数组中增加一个值

3、"i":即ignore,忽略大小写

其余部分:

1、window.location.search:取url中“?”后面的值,包括"?",取到的值为:?id=6&name=xiaoha&sex=male

2、window.location.search.substr(1):截取第一个字符后面的字符串,即去掉"?",取到的值为:id=6&name=xiaoha&sex=male  

    PS:substr()函数的使用:stringObject.substr(start,length):start必需,表开始截取的位置;length可选,表截取长度

3、match(reg):匹配正则,匹配后数组中应包含4个值. 在getUrlParams("id")函数中,此时 r 获取到的数组应该是 ["id=6&", "", "id", "&"] ;在getUrlParams("name")函数中,此时 r 获取到的数组应该是 ["&name=xiaoha&", "&", "name", "&"]

    PS:match的使用:stringObject.match(regexp),如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。上面例子中正则表达式的子表达式为:(^|&)、([^&]*)、(&|$),所以匹配结果是含有四个元素的数组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值