js中的正则表达式,从cookie中获取值

时间:2014-03-05 02:18:17

标签: javascript regex

我想获取cookie中“key”的“值”,cookie的格式是:

  

KEY1:VALUE1; KEY2:VALUE2; ...... keyn:值N

因为JS不支持(?<=exp),所以我使用此函数来获取值:

    function getCookieValue(key)
    {
        var cookie = document.cookie;
        var filter = new RegExp(key+"=([^;]*)(;|$)");
        return cookie.match(filter)[1];
    }

结果是正确的,但我有一些问题:

  1. 如果我使用cookie.match(filter),则匹配结果为key:value;,value。正则表达式匹配两个结果。为什么?
  2. 对于cookie.match(filter)[1],返回的数组是否依赖于JS解析器?
  3. 有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

  

如果我使用cookie.match(filter),则匹配结果为“key:value;,value”。 rex匹配两个结果,为什么?

来自String#match函数的结果值是一个数组,其中第一个数组索引保存完整匹配,数组中的后续元素保存匹配的组。

  

对于cookie.match(filter)[1],返回的数组是否依赖于JS解析器?

不,这不依赖于特定的JS解析器,该行为是标准的。

  

有更好的方法吗?

我确信那里有cookie解析器库。