谁能解析下js getcookie 的正则?

mengyaoren 2011-10-13 05:21:28
看了一个getcookie函数,里面的正则不是很明白,谁能解释下吗?谢谢
代码是这样的:
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}

...全文
200 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengyaoren 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]

引用 1 楼 nbgcqlk 的回复:
(^| )"+name+"=([^;]*)(;|$)

(^| ):非|开头
"+name+"= : "+name+"= Cookie的名称=
([^;]*): 零个或者任意个非分号的字符,也就是cookie的具体值
最后以字符;|结尾

非|开头 应该是 [^|]

(^| )"+name+"=([^;]*)(;|$)
这个正则表示……
[/Quote]谢谢,被你说了一下,很清楚了。
q107770540 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nbgcqlk 的回复:]
(^| )"+name+"=([^;]*)(;|$)

(^| ):非|开头
"+name+"= : "+name+"= Cookie的名称=
([^;]*): 零个或者任意个非分号的字符,也就是cookie的具体值
最后以字符;|结尾
[/Quote]
非|开头 应该是 [^|]

(^| )"+name+"=([^;]*)(;|$)
这个正则表示:
匹配这样的字符串:
以name或空格+name开头
后边跟的是 等号和 非分号的字符串 0-N个
最后以分号或直接结尾
nbgcqlk 2011-10-13
  • 打赏
  • 举报
回复
(^| )"+name+"=([^;]*)(;|$)

(^| ):非|开头
"+name+"= : "+name+"= Cookie的名称=
([^;]*): 零个或者任意个非分号的字符,也就是cookie的具体值
最后以字符;|结尾
javascript操作cookie /** * Read the JavaScript cookies tutorial at: * [url]http://www.netspade.com/articles/javascript/cookies.xml[/url] */ /** * Sets a Cookie with the given name and value. * * name Name of the cookie * value Value of the cookie * [expires] Expiration date of the cookie (default: end of current session) * [path] Path where the cookie is valid (default: path of calling document) * [domain] Domain where the cookie is valid * (default: domain of calling document) * [secure] Boolean value indicating if the cookie transmission requires a * secure transmission */ function setCookie(name, value, expires, path, domain, secure) { [removed]= name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } /** * Gets the value of the specified cookie. * * name Name of the desired cookie. * * Returns a string containing value of specified cookie, * or null if cookie does not exist. */ function getCookie(name) { var dc = [removed]; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = [removed].indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } /** * Deletes the specified cookie. * * name name of the cookie * [path] path of the cookie (must be same as path used to create cookie) * [domain] domain of the cookie (must be same as domain used to create cookie) */ function deleteCookie(name, path, domain) { if (getCookie(name)) { [removed] = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } } -------------------------------------------------------------------------------- function setCookies(name,value) { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); [removed] = name + "="+ escape(value) +";expires="+ exp.toGMTString(); } function getCookies(name) { var arr = [removed].match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } function delCookies(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) [removed]=name +"="+cval+";expires="+exp.toGMTString(); } -------------------------------------------------------------------------------- function getCookie(name) { var dc = [removed]; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = [removed].indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } 这个应该不行吧. ======================================= //另一个读取COOKIE的方法 function GetCookieData(sL) { var sRet=""; var sC=""+[removed]; if(sC.length>0) { var aC=sC.split(";",100); var iC=aC.length; for(var i=0;i

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧