此:
replace(/([a-zA-Z])([A-Z]+)/g,'$1'+'$2'.toLowerCase() )
不会将$ 2转换为小写(未更改)
但是:
replace(/([a-zA-Z])([A-Z]+)/g,'$1'+'heLLo'.toLowerCase() )
将每个大写字母替换为"你好" (正如预期的那样)
为什么?
感谢。
答案 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);