/ / Чому toLowerCase () не працює з регулярним виразом? - javascript, regex, замінити, малі літери

Чому toLowerCase () не працює з регулярним виразом? - javascript, regex, замінити, малі літери

Це:

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

Не конвертує $ 2 в малі регістри (без змін)

Але:

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

Зміна кожного верхнього регістру замінюється на "привіт" (як очікувалося)

Чому?

Дякую.

Відповіді:

2 для відповіді № 1

Оскільки 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);