一个正则表达式,允许只有一个大写字母的字符串

Pho*_*nix 3 c# regex string

字符串长度应为6到20个字符.它应该包含1个大写字母.

我可以使用C#在代码中执行此操作:

string  st = "SomeString"

Regex rg = new Regex("[A-Z]");
MatchCollection mc = rg.Matches(st);

Console.WriteLine("Total Capital Letters: " + mc.Count);

if (mc.Count > 1)
{
  return false;
}
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是一个正则表达式,它将匹配我的字符串,如果它只包含一个大写字母.字符串可以以普通字母开头,并且只能包含字母.

Wel*_*bog 7

这个匹配包含小写字母的字符串,然后是单个大写字母,然后是更小写的字母.

^[a-z]*[A-Z][a-z]*$
Run Code Online (Sandbox Code Playgroud)

您可以根据需要调整第一个和最后一个部分以包含其他字符,具体取决于您所需的字符域.

对于长度为6到20且仅包含字母且最多只有一个大写字母的所有字符串,您可以使用前瞻:

(?=^[a-zA-Z]{6,20}$)^[a-z]*[A-Z][a-z]*$
Run Code Online (Sandbox Code Playgroud)

  • 你可以缩短它:^(?=.{6,20} $)[az]*[AZ] [az]*$ (2认同)