这是一个用正则表达式截取cookie值的方法,但是我没有看懂,请教各位大神。
document.cookie="a2="+encodeURIComponent("时代; ");
document.cookie="b2="+encodeURI("兴邦");
function getCookie(cookieName) {
var re = new RegExp("\\b"+cookieName+"=([^;]*)\\b");
var arr =  re.exec(document.cookie);
return decodeURIComponent(arr?arr[1]:"");
}
alert(getCookie('a2'));
主要不明白的是:getCookie函数。

解决方案 »

  1.   

    document.cookie="a2="+encodeURIComponent("时代; ");//向cookie中写入cookie名为a2值为时代;
    document.cookie="b2="+encodeURI("兴邦");//同上
    function getCookie(cookieName) {
     var re = new RegExp("\\b"+cookieName+"=([^;]*)\\b");//正则分割cookie(js保存cookie格式为 名称=值)
     var arr = re.exec(document.cookie);//执行正则分割出数据
     return decodeURIComponent(arr?arr[1]:"");//返回a2的值时代;
    }
    alert(getCookie('a2'));
      

  2.   

    var re = new RegExp("\\b"+cookieName+"=([^;]*)\\b");
    就是
    var re = /\ba2=([^;]*)\b/
      

  3.   

    为什么  new RegExp("\\b"+cookieName+"=([^;]*)\\b");==/\ba2=([^;]*)\b/  啊?
    第一个是用构造函数还做的么?
    还有就是("\\b"+cookieName+"=([^;]*)\\b")这段表达式的意思是这段cookie开头是用分号;开始么?
      

  4.   

    new RegExp("\\b"+cookieName+"=([^;]*)\\b");==/\ba2=([^;]*)\b/ 这个表示初始化正则对象,并将匹配的正则表达式构造RegExp对象里,然后通过正则中的方法去执行。"\\b"+cookieName+"=([^;]*)\\b") 这个不表示开头用分号,这个可以写成 var re = /\ba2=([^;]*)\b/ ,[^;]表示这个字符串不包含这个 ";"
      

  5.   

    好吧给你讲详细点
    ("\\b"+cookieName+"=([^;]*)\\b")
    \b"+cookieName 表示从传进去的a2位置开始匹配 =原样匹配不管([^;]*)把=后面的除过;和后面的值(也就是;前面的值)放入一个命令捕获组中