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

时间:2025-02-11 07:00:07
function getUrlParams(param) { 
    var reg = new RegExp("(^|&)" + param + "=([^&]*)(&|$)", "i"); //定义正则表达式 
    var r = (1).match(reg);  
    if (r != null) return unescape(r[2]); 
  return null; 
}

 = "?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、:取url中“?”后面的值,包括"?",取到的值为:?id=6&name=xiaoha&sex=male

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