正则表达式为大写所有单词,但不包括 '(撇号)

Regex to Upper Case all words but exclude ' (apostrophe)

我正在尝试为所有字符串单词构建一个大写的函数,但我遇到了以下问题:

String.prototype.upper = function() {
    return this.replace(/[^a-zA-Z0-9]+(.)/g, chr => chr.toUpperCase())
 }


let str = "My uncle's car is red";
console.log(str.upper()) 


//My Uncle'S Car Is Red

我需要在撇号后排除 S 大写。

知道如何做到这一点吗?

谢谢

我会将正则表达式更改为 \s+\w 以在空格 and/or 制表符后搜索字母。

const upper = (input) => input.replace(/\s+\w/g, x => x.toUpperCase());
console.log(upper("My uncle's car is red"));