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」のように2文字です。たとえば、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を1行ずつ読む必要があると思います。

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 に答える