带有重音符号的Javascript / jQuery大写首字母变量
我有一个带有一些文本输入的表单来插入一个人的First Name
, Last 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"