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

时间:2013-05-15 19:08:35

标签: javascript jquery regex uppercase

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

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

        });
        $(this).val(str);
    });

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

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

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

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

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

希望你能帮助我!! :)

2 个答案:

答案 0 :(得分:3)

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

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

而是使用此正则表达式

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

答案 1 :(得分:2)

[a-z]é不符。你必须要宽容一点:

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

输出:

"González Foo Bar, Baz Él"