Это не работает, потому что вы применяете .toUpperCase
к строке "$1"
, которая, конечно же, оставлена без изменений. Затем неизменная строка передается функции .replace
, и результат ... ну, ничего не происходит.
Правильный способ сделать это было бы использовать функцию обратного вызова:
str.replace(/[a-z]/g,function(m) {return m.toUpperCase();});
(я предполагаю, что, конечно, что это упражнение - в данном конкретном случае, str.toUpperCase()
непосредственно было бы намного лучше!)
Передача обратного вызова .replace()
- очень мощная вещь. Важно помнить, что переданные ему аргументы будут состоять в первом совпадении, затем первом подшаблоне и т. Д. Вот почему я удалил ()
в вашем регулярном выражении - они не нужны.
'' $ 1 ".toUpperCase() ==" $ 1 "'. Это то, что вы проходите. – Bergi