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

未调用javascript replace()中的回调函数,javascript,regex,cookies,Javascript,Regex,Cookies,我想替换cookie字符串的域: 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函数。代码有什么问题?这是因为正则表达式与cookie

我想替换cookie字符串的

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

这是因为正则表达式与
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);
});