我有一个带有一些文字输入的表单来插入一个人的First Name
,Last 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"
在重音后,再次出现一个大写字母。
如何修改正则表达式以避免此问题?
希望你能帮助我!! :)答案 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"