3

我正在从这个线程工作:

在 JavaScript 中按名称读取 cookie 的最短函数是什么?

这表明可以使用以下代码在 JavaScript 中读取 cookie:

function read_cookie(key)
{
    var result;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}

我有一个名为“country”的cookie,它的值是两个字母,例如“AZ”。我想知道如何读取 cookie 的值并将其放入一个名为 cookie_country 的变量中。这个正则表达式比我高一点,我不知道从哪里开始。

4

2 回答 2

3

这个...

var cookie_country = read_cookie('country');

...对于这种情况应该足够了。) 这个函数的要点(和其他许多函数一样)是它为您提供了一个工具,用于document.cookie通过某个字符串键('country'在您的情况下)从字符串中提取值:您不需要知道该工具的工作原理,除非它休息。)

...但无论如何,也许知道这一点也会很有趣。)document.cookie实际上是一个字符串,其中包含以分号分隔的 cookie 列表(其键和值)。这里有更多关于它的信息(MDN)。

正则表达式基本上在行的开头或结尾处捕获与给定字符串匹配的字符串部分;,然后继续直到再次出现另一个分号的字符串结尾。

例如,如果key参数等于country,则正则表达式将如下所示:

/(?:^|; )country=([^;]*)/

...它将捕获与字符串关联的存储值。document.cookiecountry

于 2012-11-12T23:34:25.593 回答
0

我想你必须逐行阅读 cookie。

var rows = document.cookie.split(;);
for (i=0;i<rows.length;i++)
{
    var firstrow = rows[i].substr(0,rows[i].indexOf("="));
}

创建时,您可以将变量放在标识符之间,例如 AZ 正则表达式应如下所示:'##[AZ]{2}##'

当然,我可能完全错了:)

希望这可以帮助。

于 2012-11-12T23:45:20.507 回答