为什么toLowerCase()不能与regexp一起使用?

时间:2013-12-15 19:51:01

标签: javascript regex replace lowercase

此:

replace(/([a-zA-Z])([A-Z]+)/g,'$1'+'$2'.toLowerCase() )

不会将$ 2转换为小写(未更改)

但是:

replace(/([a-zA-Z])([A-Z]+)/g,'$1'+'heLLo'.toLowerCase() )

将每个大写字母替换为"你好" (正如预期的那样)

为什么?

感谢。

1 个答案:

答案 0 :(得分:2)

因为toLowerCase在进入主函数replace之前执行。这就是你在做的事情:

replace(/([a-zA-Z])([A-Z]+)/g,'$1hello')

你可以用这个做你想做的事:

var replaceLogic = function(fullMatch, firstGroup, secondGroup){ 
    return firstGroup.toLowerCase() + secondGroup; 
};
string.replace(/([a-zA-Z])([A-Z]+)/g, replaceLogic);