只允许首字母大写字母(正则表达式)

时间:2011-09-12 16:28:05

标签: javascript regex replace

function toTitleCase(str){
    var styleName = $("a.monogramClassSelected").attr("styleKey");
        if (styleName == 'script') {
        return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(/\s/, '');
        } else {
        return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
        }

}

这有效(感谢下面的帮助) - 删除空格并将首字母大写。

但是,我需要不同的功能,并且第一次没有正确构建我的问题。

我需要使用正则表达式才允许首字母大写。上面的字符串替换方法不能完全工作,因为用户可以通过使用空格来绕过该方法。所以他们可以拥有“To Two”。我需要重做正则表达式,只允许第一个字母大写,无论空格如何。 (并且第一个字母不必大写)

感谢大家的帮助到目前为止!

3 个答案:

答案 0 :(得分:1)

这个正则表达式替换零形式或完全一个空格的所有序列,后面跟大写字母只有字母,同时保持文本的其余部分不变(允许多个空格)

str.replace(/\s{0,1}([A-Z])(\s*\w*)/g, '$1$2');

替换字符串中的$ 1和$ 2可以访问这些组。

regex explaination

<强>示例

输入“一个从未犯过错误的人从未尝试过任何新事物。 - Albert Einstein :)”

替换字符串“一个人从未犯过错误从未尝试过任何新的东西。-AlbertEinstein :)”

如果您想删除多个空格而不是大写字母前面的零或一个空格,请在上面的表达式中使用\s*代替\s{0,1}

答案 1 :(得分:0)

要删除空格,这对我有用:

function toTitleCase(str){
    str = str.replace(/\s[A-Z]/, '');
    // str = str.replace(/[A-Z]\s/, '');
    return str;
}

答案 2 :(得分:0)

这样做:

function UppercaseFirst(str) {
    str = str.replace(/^\s+/, '');
    str = str.charAt(0).toUpperCase() + str.substr(1);
    return str
}

var mystring = " this is a test";

alert(UppercaseFirst(mystring));