一则正则表达式 简单解析

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); 
var r = window.location.search.substr(1).match(reg); 
if (r!=null) return unescape(r[2]); return null; 

这个方法是获得页面url的某个url参数的方法

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");

这个正则是寻找&+url参数名字=值+&
&可以不存在。

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

在JS中正则表达式若有几个部分组成,即有几个正则表达式组成,则在MATCH后会返回匹配项及各个部分。

如下例进行分段解析。

 var reg = new RegExp("(^|&)" + "code" + "=([^&]*)(&|$)", "i");
 var r = "code=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=80035161_1_dg".substr(0).match(reg);

则r为一个数组,共有四项,分别如下:

r[0] 为发现的匹配项,如此项为null,则r本身即为空。此时,该项为"code=utf-8&".

r[1] 为第一个正则表达式所匹配的项,即(^|&)所对应的项,目前为空,即“”。

r[2]为第二个正则表达式所匹配的项,即([^&]*)所对应的项,目前为“utf-8

r[3]为第三个正则表达式所匹配的项,即(&|$)所对应的项,目前为”&“,若为最后一个,则为”“。

猜你喜欢

转载自blog.csdn.net/andrewniu/article/details/81126088
今日推荐