C# 字符串的正则表达式以数字开头,后跟字母

C# 字符串的正则表达式以数字开头,后跟字母,c#,.net,regex,winforms,C#,.net,Regex,Winforms,我想用正则表达式来表示这样的输入 1 1a 1b 1c 1d 2 2a 2b 2c 但如果我写了以下输入,那么它不应该允许 a b c 字符串必须以1或2开头(仅一次且必须),然后后跟a到z之间的任何字符(仅一次) 所以字符串的总长度只有2 第一个字母始终为1或2(第一个字母是必填的) 第二个字母为a至z(非强制性) 我尝试了这个[1-2]?[a-zA-Z]?,但它允许我输入以任何字符开头的字符串 我想要这个C#.Net的正则表达式,您需要锚定正则表达式-您需要指定它们必须位于字符串的开头

我想用正则表达式来表示这样的输入

1
1a
1b
1c
1d
2
2a
2b
2c
但如果我写了以下输入,那么它不应该允许

a
b
c
字符串必须以1或2开头(仅一次且必须),然后后跟a到z之间的任何字符(仅一次)

所以字符串的总长度只有2

第一个字母始终为1或2(第一个字母是必填的)
第二个字母为a至z(非强制性)

我尝试了这个
[1-2]?[a-zA-Z]?
,但它允许我输入以任何字符开头的字符串


我想要这个C#.Net的正则表达式,您需要锚定正则表达式-您需要指定它们必须位于字符串的开头

您还需要指定必须有1或2。有几种方法可以做到这一点,我选择了alternation
(1 | 2)
,认为character类是另一种选择(
[12]

您可以通过使用
^
启动正则表达式来实现这一点:

^(1|2)[a-zA-Z]?

因此,上述内容将匹配

这样就可以了^(1 | 2)[a-zA-Z]?$

还可以删除吗?因为根据他的描述,这不是一个可选的匹配。(可能在结尾使用$,虽然他的帖子中不完全清楚)@Dirk-谢谢-我看了第一部分,没有注意到其他要求。OP提到他只希望数字匹配。如果删除可选标志,则1应该匹配。@Carlos13-我不明白。