JavaScript Cookie 操作封装与正则提取详解

作者:半夏

时间:2026-10-25

浏览:454

本文提供了一套完整的JavaScript Cookie操作方案,包含JSCookie类的封装实现,支持设置带过期时间、域名、路径及子键的Cookie,以及读取和删除功能。此外,还介绍了利用正则表达式直接解析document.cookie的高效方法,特别针对ASP URL编码场景提供了unescape处理建议,帮助开发者灵活管理浏览器存储数据。

文章目录

使用步骤如下:


一、设置Cookie

封装JSCookie类进行增删改查

具体代码实现如下:

 
首先实例化一个Cookie对象:
// 执行普通设置操作
cookie.SetCookie("key1","val1");
// 设置有效期为一年
var expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() + 1);
cookie.SetCookie("key2","val2",expire_time);
// 同时指定域名和路径,并包含过期时间
cookie.SetCookie("key3","val3",expire_time,".cnblogs.com","/");
// 设置包含子键的Cookie,子键分别为k1,k2,k3
cookie.SetCookie("key4","k1=1&k2=2&k3=3");


二、读取Cookie

代码示例如下:

 
// 进行简单获取操作
cookie.GetCookie("key1");
cookie.GetCookie("key2");
cookie.GetCookie("key3");
cookie.GetCookie("key4");
// 获取key4中子键k1的具体值
cookie.GetChild("key4","k1");


三、删除Cookie

相关代码如下:

 
cookie.Expire("key1");
cookie.Expire("key2");
cookie.Expire("key3");
cookie.Expire("key4");


完整示例展示:


JSCookie类完整源码实现

代码片段如下:

 
<script type="text/javascript">
String.prototype.Trim = function()
{ 
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
} 
function JSCookie()
{ 
this.GetCookie = function(key)
{ 
var cookie = document.cookie;
var cookieArray = cookie.split(';');
var getvalue = "";
for(var i = 0;i<cookieArray.length;i++)
{ 
if(cookieArray[i].Trim().substr(0,key.length) == key)
{ 
getvalue = cookieArray[i].Trim().substr(key.length + 1);
break;
} 
} 
return getvalue;
}; 
this.GetChild = function(cookiekey,childkey)
{ 
var child = this.GetCookie(cookiekey);
var childs = child.split('&');
var getvalue = "";
for(var i = 0;i < childs.length;i++)
{ 
if(childs[i].Trim().substr(0,childkey.length) == childkey)
{ 
getvalue = childs[i].Trim().substr(childkey.length + 1);
break;
} 
} 
return getvalue;
}; 
this.SetCookie = function(key,value,expire,domain,path)
{ 
var cookie = "";
if(key != null && value != null)
cookie += key + "=" + value + ";";
if(expire != null)
cookie += "expires=" + expire.toGMTString() + ";";
if(domain != null)
cookie += "domain=" + domain + ";";
if(path != null)
cookie += "path=" + path + ";";
document.cookie = cookie;
}; 
this.Expire = function(key)
{ 
expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() - 1);
var cookie = " " + key + "=e;expires=" + expire_time + ";"
document.cookie = cookie;
} 
} 
</script>

采用正则表达式方式读取Cookie值

由于ASP生成的Cookie经过URL编码,因此在读取前需要执行unescape解码操作。



下面介绍使用正则表达式提取Cookie的方法,支持单值和多值场景:


基于正则表达式的Cookie提取方法

代码实现如下:

 
/************************************************** 
参数说明:
sMainName 表示Cookie的主键名
sSubName 表示Cookie的子键名,若留空则代表单值Cookie
**************************************************/ 
function GetCookie(sMainName, sSubName)
{ 
var re = new RegExp((sSubName ? sMainName + "=(?:.*?&)*?" + sSubName + "=([^&;$]*)" : sMainName + "=([^;$]*)"),"i");
return re.test(unescape(document.cookie)) ? RegExp["$1"] : "";
} 

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章