【问题标题】:regex in js ,get the value from cookiejs中的正则表达式,从cookie中获取值
【发布时间】:2014-03-05 02:18:16
【问题描述】:

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

key1:value1;key2:value2;……keyn:valuen

因为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. 有更好的方法吗?

【问题讨论】:

  • 是的,有一个更好的方法:一次将整个 cookie 解析成一个对象,然后从中取出属性。
  • 代码中的= 应该是:吗?
  • 对不起,我错了,cookie格式是:
  • key1=value1;key2=value2;......keyn=valuen

标签: javascript regex


【解决方案1】:

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

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

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

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

有更好的方法吗?

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

【讨论】:

  • 谢谢,我在 github 中找到了一个插件“jquery.cookie.js”,但我想知道我的代码有什么问题吗?毕竟比较简单。我在chrome、safari、FF都测试过,没问题。
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多