Этот допустит возможные пробелы в начале и не пропустит цель первой буквы в строке. Следовательно, это может улучшить уже хорошие решения, доступные в потоке.
str = " the Eifel Tower";
str.replace(/\w/, str.match(/\w/)[0].toUpperCase());
>> " The Eifel Tower";
! Но, вызовет «мягкую» ошибку, если выполняется с пустой строкой.
Чтобы избежать этой возможной ошибки или ненужной обработки пустой строки или числа, может использоваться троичная условная защита:
+str!=+str ? str.replace(/\w/, str.match(/\w/)[0].toUpperCase()) : str;