Верблюжий регистр для регулярного выражения первого символа в нижнем регистре

Я пытаюсь переименовать определенный тип строк с помощью .replace() и REGEX.

  • myCustomClass -> customClass
  • myCustomOption -> customOption

Мне нужно что-то, что фактически делает это string.charAt(0).toLowerCase() + string.slice(1), но с REGEX.

Так что я работаю над чем-то вроде этого

var myCustomClass = 'myCustomClass',
    myCustomOption = 'myCustomOption';
    
document.body.innerHTML = myCustomClass.replace('my','')
                         .replace(/([A-Z])/, ('$1').toLowerCase() ) + '<br>'

document.body.innerHTML += myCustomOption.replace('my','')
                          .replace(/([A-Z])/, ('$1').toLowerCase() )

Результаты CustomClass и CustomOption, чего я не ожидал. Как я могу это сделать, пожалуйста?


person thednp    schedule 02.02.2021    source источник
comment
Используйте функцию в качестве второго параметра для замены. Все, что вы делаете, это .replace(/[A_Z])/, '$1' /* result of toLowerCase call */), которое ничего не делает.   -  person ASDFGerte    schedule 02.02.2021
comment
Позвольте мне быстро обновить пост.   -  person thednp    schedule 02.02.2021
comment
Спасибо @ASDFGerte, я отправил ответ, надеюсь, он поможет другим, вы мужчина.   -  person thednp    schedule 02.02.2021


Ответы (1)


Как было предложено, это решение:

string.replace(/[A-Z]/, (match) => match.toLowerCase() )

Демо:

var myCustomClass = 'myCustomClass',
    myCustomOption = 'myCustomOption';
    
document.body.innerHTML = myCustomClass.replace('my','')
                         .replace(/[A-Z]/, (match) => match.toLowerCase() ) + '<br>'

document.body.innerHTML += myCustomOption.replace('my','')
                          .replace(/[A-Z]/, (match) => match.toLowerCase() )

person thednp    schedule 02.02.2021