javascript中的回调函数不调用replace()

时间:2014-02-07 09:55:45

标签: javascript regex cookies

我想替换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函数。代码有什么问题?

1 个答案:

答案 0 :(得分: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);
});