带有重音符号的Javascript / jQuery大写首字母变量

我有一个带有一些文本输入的表单来插入一个人的First NameLast Name ,但我想将每个单词的第一个字母更改为大写,我找到了这个解决方案:

  // The textboxes with this class are modified $(".toUpper").change(function () { var str = $(this).val(); str = str.toLowerCase().replace(/\b[az]/g, function (letter) { return letter.toUpperCase(); }); $(this).val(str); }); 

并且它有效, ("hEllO"=>"Hello", "whAts uP" =>"Whats Up")

当我尝试将其应用于带重音的单词时会出现问题,例如:

 "gonzález" = "GonzáLez", "pérez" = "PéRez" 

在重音后,再次出现一个大写字母。

如何修改正则表达式以避免此问题?

希望你能帮我!! 🙂

\b是非单词边界(即\b将为任何不属于[0-9a-zA-Z_]任何一个的任何字符创建边界)

所以这些重音词成为你的词的边界..

而是使用这个正则表达式

 /(^|\s)[az\u00E0-\u00FC]/g 

[az]é不匹配。 你必须要宽容一点:

 "gonzález foo bar, baz él".replace(/(^|\s)\S/g, function(match) { return match.toUpperCase(); }); 

并输出:

 "González Foo Bar, Baz Él"