var toMatch = "john w. smith";
var result = toMatch.replace(/(\w)(\w*)/g, function (_, i, r) {
return i.toUpperCase() + (r != null ? r : "");
}
)
Кажется, работает ...
Протестировано с вышеизложенным: «быстро-коричневый, лиса? / Прыжки / ^ над ^ ленивым! Собака ...» и «C: / программные файлы / какой-то поставщик / их второе приложение / файл1.txt».
Если вы хотите 2Nd вместо 2-го, вы можете изменить на /([a-z])(\w*)/g
.
Первая форма может быть упрощена как:
function toTitleCase(toTransform) {
return toTransform.replace(/\b([a-z])/g, function (_, initial) {
return initial.toUpperCase();
});
}