只允许字符串中的第一个字母大写(正则表达式)

发布于 2024-12-04 02:39:47 字数 661 浏览 3 评论 0原文

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();});
        }

}

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

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

我需要使用正则表达式只允许第一个字母大写。上面的字符串替换方法不能完全工作,因为用户可以通过使用空格来绕过该方法。所以他们可以有“两个”。我需要修改正则表达式,只允许第一个字母大写,而不管空格。 (并且第一个字母不必大写)

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

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();});
        }

}

This works (thanks to help below) - to remove spaces and have the first letter capitalized.

However, I need different functionality and did not frame my question correctly the first time.

I need to use regex to only allow the first letter to be capitalized. The string replace method above does not work fully, as a user can get around the method by using a space. So they could have "To Two". I need to rework the regex to only allow the first letter to be capitalized, regardless of spaces. (and the first letter does not have to be capitalized)

thanks for everyone's help so far!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌若浮生 2024-12-11 02:39:47

此正则表达式将零或恰好一个空格后跟大写字母的所有序列替换为仅该字母,同时保持文本的其余部分不变(允许多个空格)

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

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

正则表达式解释

示例

输入 " 一个从未犯过错误的人- Albert Einstein :)"

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

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

This regular expression replaces all sequences of the form zero or exactly one space followed by capital letter by only the letter while keeping the rest of the text untouched (with multiple spaces allowed)

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

The groups can be accessed by $1 and $2 in the replacement string.

regex explaination

Sample

Input " A person Who never made a mistake never tried anything new. - Albert Einstein :)"

Replaced string "A personWho never made a mistake never tried anything new. -AlbertEinstein :)"

In case you want to remove mutiple spaces instead of zero or one space preceding a capital letter then use \s* instead of \s{0,1} in the above expression.

昨迟人 2024-12-11 02:39:47

这样就可以了:

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));

This will do it:

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));
风吹雪碎 2024-12-11 02:39:47

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

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

To just remove the spaces, this works for me:

function toTitleCase(str){
    str = str.replace(/\s[A-Z]/, '');
    // str = str.replace(/[A-Z]\s/, '');
    return str;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文