情境:
我有一个典型的 toTitleCase() JavaScript函数w / RegEx,我用于单个文本字段,用于人名和姓氏。
function toTitleCase(str) {
return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
问题
如上所示 - 在这种情况下,我使用此函数作为名字和姓氏。因此 - 个人姓名可能有多个大写字母。例如:James O'Mally或Robert McNally。不幸的是,上面的JavaScript函数将返回James O'mally或Robert Mcnally。
我希望一些很棒的Stackoverflow贡献者可以提供一个RegEx解决方案,该解决方案会考虑这个边缘情况,并在字符串中间保留一个现有的大写值。
感谢您的时间和考虑
答案 0 :(得分:0)
也许mutating
正是您所寻找的。它会在单词边界之后的任何字母(a-z)大写。
/\b[a-z]/g
答案 1 :(得分:0)
@nhahtdh - 听起来你可能是正确的,这个问题要广泛回答。也许我会放弃RegEx并编写一个考虑这种模式的自定义格式化程序。感谢大家的帮助