鍍金池/ 問答/Java  HTML/ Js中用正則取cookie名中指定key的值

Js中用正則取cookie名中指定key的值

1.前臺(tái)取到的cookie中的字符串是多個(gè)cookie的連接,例如這兩種:

var str = "OnlineCookie=OnlineCookie&UserType=11111111111111111&UID=39&UserName=張三; UID=; UserType=; UserName=";
 
var str2 = "OnlineCookie=OnlineCookie&UserType=11111111111111111&UID=39&UserName=%e5%bc%a0%e4%bf%8a; UID=; UserType=; UserName=; UserCookie=ZZSAPP&UnitName=北京"

2.我需要獲取的是指定名字后的cookie的值,例如:
getCookie(str,"OnlineCookie","UserType"); // 返回 11111111111111111
getCookie(str,"OnlineCookie","UserName"); // 返回 "張三"
getCookie(str2,"ZSAPP","UnitName"); //返回 "北京"

3.我原來是使用數(shù)組的方式來寫??墒歉杏X好復(fù)雜,所以想換成正則的方式來做

function getCookie(str,userCookieName,name) {
    var cookie = str;   
    if (cookie) {
        var temp = cookie.split(';');
        for (var k = 0, max = temp.length; k < max; k++) {
            if (temp[k].indexOf(userCookieName) > -1) {
                var arr = temp[k].split('&');
                for (var i = 0; i < arr.length; i++) {
                    var arr1 = arr[i].split('=');
                    for (var j = 0; j < arr1.length; j++) {
                        if (arr1[0] == name) {
                            return arr1[1];
                            break;
                        }
                    }
                }
            }
           

        }
        
    }    
    return '';
}

3.這個(gè)函數(shù)怎么用Js的正則表達(dá)式書寫呢?

function getCookie(str,userCookieName,name){
}
回答
編輯回答
陌顏

用URLSearchParams吧。

2017年1月3日 18:37
編輯回答
墨沫
function getCookie(str,userCookieName,name){
    var regex=new RegExp('\\b'+userCookieName+'\\b.*?&'+name+'=([^&;]*)','g');
    var result=regex.exec(str);
    return result&&result[1];
}
2018年8月29日 01:03
編輯回答
朕略萌
function getCookieValue(key, cookieStr) {
    var result = new RegExp(`(?:^|\s)${key}=([^;]*)`).exec(cookieStr)
    return result && result[1]
}
2017年2月8日 06:52