通过正则表达式名称获取的Javascript Cookies

通过正则表达式名称获取的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

嗨,假设浏览器缓存中有此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.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..."]