1

我有一个表格,其中包含一些要插入的文本输入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"

在重音单词之后又是一个大写字母。

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

希望你能帮我!!:)

4

2 回答 2

3

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

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

而是使用这个正则表达式

/(^|\s)[a-z\u00E0-\u00FC]/g
于 2013-05-15T19:11:35.993 回答
2

[a-z]不匹配é。你必须更宽容一点:

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

和输出:

"González Foo Bar, Baz Él"
于 2013-05-15T19:22:47.043 回答