Javascript 如何检查JS正则表达式中的首字母应为大写

Javascript 如何检查JS正则表达式中的首字母应为大写,javascript,regex,Javascript,Regex,我正在学习javascript和正则表达式,并尝试验证字符串中的第一个字母是否为大写 我当前的正则表达式是:var patt1=/[A-Z]{4}$/ 但是,如果所有四个字母都是大写的,而不仅仅是第一个字母,那么这就是验证字符串 你知道怎么做吗 注意:我也在检查输入是否应该是4个字母长。如果“大写”是指a-Z中的字母,那么您可以使用 var isFirstLetterUppercase = /^[A-Z]/.test(yourString); 这里(以及类似情况下)的想法是使用与字符串开头匹配

我正在学习javascript和正则表达式,并尝试验证字符串中的第一个字母是否为大写

我当前的正则表达式是:
var patt1=/[A-Z]{4}$/

但是,如果所有四个字母都是大写的,而不仅仅是第一个字母,那么这就是验证字符串

你知道怎么做吗

注意:我也在检查输入是否应该是4个字母长。

如果“大写”是指a-Z中的字母,那么您可以使用

var isFirstLetterUppercase = /^[A-Z]/.test(yourString);
这里(以及类似情况下)的想法是使用与字符串开头匹配的
^

如果还要检查字符串的长度,可以使用:

var isOK = /^[A-Z].{3}$/.test(yourString);

这里,
{3}
表示3个字符,
$
是字符串的结尾。

在正则表达式中使用A-Z测试的问题是A-Z不是唯一的大写字母

以德国的贝林根市为例。第一个字母当然是大写的,但它不在A到Z的范围内。请在JavaScript控制台中尝试:

/^[A-Z]/.test('Überlingen');  // logs false - oops!
现在这里是有点棘手的地方。大写字母到底意味着什么?在英语中很简单:A-Z对A-Z。在德语中,Ü(例如)是大写字母,而ü是小写字母。对于此类同时具有大写和小写字符的语言,可以通过使用
.toLowerCase()
方法将字符转换为小写并与原始字符进行比较来测试字符是否为大写。如果它们不同,则原始为大写。如果它们相同,则原始字符可能是小写字符,也可能是没有大小写版本的字符(例如数字或标点符号)

现在,您可以通过使用
.charAt()
提取字符串的第一个字符并调用
isUpperCase()
,来测试字符串的第一个字符是否为大写:

这对德国城市来说是正确的:

beginsWithUpperCase( 'Überlingen' );  // logs `true`.
现在,由于我们根本不使用正则表达式,如果要检查字符串长度,只需使用
.length
属性:

function fourCharactersWithFirstUpperCase( string ) {
    return string.length === 4  &&  beginsWithUpperCase( string );
}

fourCharactersWithFirstUpperCase( 'über' );  // logs false
fourCharactersWithFirstUpperCase( 'Über' );  // logs true
fourCharactersWithFirstUpperCase( 'Überlingen' );  // logs false
因此,对于具有相同字符的大小写版本的语言,我们的状态良好。但是对于没有大写和小写字符的语言呢?然后,对于任何字符串,此代码都将返回
false

我脑子里没有一个很好的解决办法;你得想一想你想怎么处理这个案子

顺便说一句,如果你真的想用一个正则表达式来尝试这个方法,这里有一个可能的方法。不只是测试A-Z,您可以列出您可能需要处理的语言中的所有大写字母。根据该答案调整正则表达式,它可能如下所示:

function beginsWithUpperCase( string ) {
    return /^[A-ZÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð]/.test( string );
}

当然,这就提出了一个问题:我们是否已经准确地列出了每种语言的所有大写字符

当你用谷歌搜索你的标题时,你会得到一个答案。这4个是从哪里来的?你想验证字符串的长度吗?@dystroy是的,请查看编辑的Q.@RohitJain如何搜索?也许我应该搜索itThanks以获得你的答案,它可以测试第一个字母,但我也在检查输入的长度是否应该是4个字母。@user2684945让我们假设一个以大写字母开头的四个字母的字符串是一个以大写字母开头的字符串,后跟更多的字符,然后结束。还有一个提示:字符串锚点的结尾是
$
@dystroy,非常感谢,{.}点非常令人印象深刻。“如果“大写”表示a-Z中的一个字母…”很抱歉不同意,但当您必须处理非ASCII字符(如德国的Überlingen市)时,这只是给自己设置了一个错误。有一种简单的方法可以正确确定字符或字符串是否为大写,最好使用它。@MichaelGeary我警告不要这样做,但这完全取决于要求。由于OP是明确的“学习正则表达式”,我想一个非正则表达式的答案不会令人满意。。。
function fourCharactersWithFirstUpperCase( string ) {
    return string.length === 4  &&  beginsWithUpperCase( string );
}

fourCharactersWithFirstUpperCase( 'über' );  // logs false
fourCharactersWithFirstUpperCase( 'Über' );  // logs true
fourCharactersWithFirstUpperCase( 'Überlingen' );  // logs false
function beginsWithUpperCase( string ) {
    return /^[A-ZÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð]/.test( string );
}