0

有人可以解释这个正则表达式的作用吗?

document.cookie.match(/cookieInfo=([^;]*).*$/)[1]

如果我能去掉我在 cookieInfo 值中看到的双引号,那就太好了。即当 cookieInfo="xyz+asd" - 我想用上面的正则表达式去掉双引号。

4

3 回答 3

2

它基本上说抓住尽可能多的不是分号的字符,并且在字符串'cookieInfo ='之后

试试这个来消除双引号:

document.cookie.match(/cookieInfo="([^;]*)".*$/)[1]
于 2013-03-13T16:19:09.950 回答
0

正则表达式匹配以 'cookieInfo=' 开头的字符串,然后捕获 0 个或多个非半列字符,后跟 0 个或多个 'anythings'。

要去掉双引号,您可以使用正则表达式 /"/ 并将其替换为空字符串。

于 2013-03-13T16:17:15.340 回答
0

它在 document.cookie 字符串中搜索cookieInfo=.
接下来它会抓取所有不存在的字符;(直到它碰到第一个分号)。
[...]包含在里面的所有字符的集合。
[^...]不匹配的所有字符的集合

然后它让 RegEx 搜索所有其他字符。
.*任何字符,0 次或多次。
$字符串结尾(或在某些特殊情况下,行尾)。

您可以替换"几种不同的方式,但我建议不要将其填充到正则表达式中,而是在事后对其进行替换:

var string = document.cookie.match(...)[1],
    cleaned_string = string.replace(/^"|"$/g, "");

第二个正则表达式说“查看字符串的开头,看看是否有 a ",或者查看字符串的结尾,看看是否有 a "
通常,RegEx 会在它完成它找到的第一件事后停止。g在end 意味着继续寻找它可能在你给它的字符串中找到的每一个匹配。

我不会把它放在原始的 RegEx 中,因为使用可选引号可能很难看。
如果他们保证永远,永远在那里,那很好,但如果你假设他们是,并且你击中了一个没有他们的人,那么你就会得到一场null比赛。

于 2013-03-13T16:28:18.683 回答