getCookie = function(t) {
var s = document.cookie.match("(?:^|;)\\s*" + t + "=([^;]*)");
return (s && s[1]) ? decodeURIComponent(s[1]) : ""
},
(?:^|;)这句我不明白,是什么意思
还有match参数里的字符串能当正则用?
如果是正则,那么为什么s[1]得到的是([^;]*)里的值,而不是(?:^|;)里的值
var s = document.cookie.match("(?:^|;)\\s*" + t + "=([^;]*)");
return (s && s[1]) ? decodeURIComponent(s[1]) : ""
},
(?:^|;)这句我不明白,是什么意思
还有match参数里的字符串能当正则用?
如果是正则,那么为什么s[1]得到的是([^;]*)里的值,而不是(?:^|;)里的值
1.(?:^|;) 在行开头或者是以;开头. ?:非捕获
2.match里面的字符串本来就应该是正则 不是当正则
3.不是数组的原因. 因为?:表示非捕获 也就是他修饰的括号里 不进行保存 你可以把?:去掉 就可以看到效果了
非捕获是非捕获,但是这里不是这个原因比如var s="#11111111";
var rex=/#(?:\d+)/;
alert(s.match(rex)[1]);//这里脚标是1就是undefine 0的话就是#11111111
//可见和非捕获没关,除非他alert(RegExp.$1)
<script type="text/javascript">
<!--
str = "abbb34eftab0modabbbbb6";
var reg = /a(b)+(\d+)/i;// then test: var reg = /a(b)+(\d+)/ig
var arr = str.match(reg);
for(var i = 0; i < arr.length; i++){
document.write(arr[i] + "---->"); //根据返回结果可知如果有g全局,那么返回所有匹配[abbb34,ab0,abbbbb6]
//如果没有g全局,那么返回数组arr[0]为匹配的完整字串后面是括号里的捕获[abbb34,b,34];
}
//-->
</script>给你个例子
原来一直以来都弄错了,谢谢
你随便查个文档就知道了 正则^ 表示行开头 $表示行结尾.
就像你上面代码 应该传入的参数是cookie的name.而name有可能是两种情况
1. name=aaa;expires='...'; //这种就是在行开头 所以用^
2. expires='...';name=aaa; // 这种name在后面的就是以;开头
鉴于这两种情况所以用选择符(^|;)//这样就肯定能取到name的value