通过正则表达式名称获取的Javascript Cookies
嗨,假设浏览器缓存中有此cookie,我如何通过正则表达式名称获取cookie通过正则表达式名称获取的Javascript Cookies,javascript,jquery,regex,cookies,Javascript,Jquery,Regex,Cookies,嗨,假设浏览器缓存中有此cookie,我如何通过正则表达式名称获取cookie name: value: text1 something test something text2 something 4 bla 比如get cookies regex('test'+onlynumbers) 返回 text1 something text2 something 嗯,我想这是一种方式,但不是一种优雅的方式: // demo cookie data document.coo
name: value:
text1 something
test something
text2 something
4 bla
比如get cookies regex('test'+onlynumbers)
返回
text1 something
text2 something
嗯,我想这是一种方式,但不是一种优雅的方式:
// demo cookie data
document.cookie="text2=mu";
document.cookie="text1=mu2";
document.cookie="otherText=mu3";
// helper function from
// http://codecandies.de/2010/02/15/js-library-namespace-und-erste-funktionen/
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
// the function in question
function getCookieArray(regexp) {
cookieString = document.cookie;
filterResult = cookieString.match(regexp);
returnArr = {};
for(var i=0; i < filterResult.length; i++) {
returnArr[filterResult[i]]=getCookie(filterResult[i]);
}
return returnArr;
}
//demo run
function run() {
filteredCookies = getCookieArray(/text[0-9]+/g);
for(var key in filteredCookies)
alert(key+":"+filteredCookies[key]);
}
run();
//演示cookie数据
document.cookie=“text2=mu”;
document.cookie=“text1=mu2”;
document.cookie=“otherText=mu3”;
//辅助函数来自
// http://codecandies.de/2010/02/15/js-library-namespace-und-erste-funktionen/
函数getCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
请注意,您需要在regexp的末尾添加一个“g”,以获得所有匹配的cookie,而不仅仅是第一个cookie。类似的方法应该可以工作(未测试):
var getCookieByMatch=函数(regex){
var cs=document.cookie.split(/;\s*/),ret=[],i;
对于(i=0;i[“text1=x;…”,“text2=y…”
加上你的getCookie
函数有缺陷(请参阅)。@Gumbo。是的,我也这么认为,但我重新阅读了这篇文章,w3cschool是错误的,不是这里使用的quirksmode函数。但是谢谢你的评论。
var getCookieByMatch = function(regex) {
var cs=document.cookie.split(/;\s*/), ret=[], i;
for (i=0; i<cs.length; i++) {
if (cs[i].match(regex)) {
ret.push(cs[i]);
}
}
return ret;
};
getCookieByMatch(/^text\d+=/); // => ["text1=x;...", "text2=y..."]