2014-02-07 53 views
0

我想更換一個cookie字符串的domain回調函數()是不是叫

var cookieText = 'test=value; path=/; domain=.mydomain.com'; 

cookieText.replace(/[Dd]omain=(\.?)([a-zA-Z0-9\.]*);/, function(match, dot, domain){ 
    return dot + myfunction(domain) 
}); 

但似乎myCallBack函數功能不會被調用。代碼有什麼問題?

回答

2

這是因爲您的正則表達式不匹配您的cookieText字符串中的任何子字符串。發生這種情況是因爲您的模式在每個子字符串的末尾都會有一個;,但這不會發生在domain=.mydomain.com。試試這個正則表達式來代替:

/[Dd]omain=(\.?)([a-zA-Z0-9\.]*);?/ 

然後它會工作:

var cookieText = 'test=value; path=/; domain=.mydomain.com'; 

cookieText.replace(/[Dd]omain=(\.?)([a-zA-Z0-9\.]*);/, function(match, dot, domain){ 
    console.log(match); 
    return dot + myfunction(domain); 
});