Javascript Cookies получают по имени регулярного - PullRequest
1 голос
/ 22 мая 2011

Привет, как я могу получить файлы cookie по именам регулярных выражений при условии, что эти файлы cookie находятся в кэше браузера

name:  value:
text1  something
test   something
text2  something
4      bla

например, get regex для cookie ('test' + onlynumbers)

возвращает

text1  something
text2  something

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Примерно так должно работать (не проверено):

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..."]
0 голосов
/ 23 мая 2011

Ну, это способ, но не элегантный, я думаю:

// 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();

Обратите внимание, что вам нужно добавить "g" в конце регулярного выражения, чтобы все куки совпадали, а не толькопервый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...