【问题标题】:RegEx for string starts with numbers and followed by letters字符串的正则表达式以数字开头,后跟字母
【发布时间】:2013-05-16 06:38:22
【问题描述】:

我想要此类输入的正则表达式。

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 的 RegEx

【问题讨论】:

    标签: c# .net regex winforms


    【解决方案1】:

    您需要锚定正则表达式 - 您需要指定它们需要位于字符串的开头。

    您还需要指定 1 或 2 个 必须 存在。有几种方法可以这样做,我选择了交替(1|2),认为字符类是另一种选择([12])。

    您可以通过使用^ 开始正则表达式来做到这一点:

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

    所以,上面会匹配

    【讨论】:

    • 同时删除 ?因为根据他的描述,这不是可选的匹配。 (也许在最后使用 $,尽管这在他的帖子中并不完全清楚)
    • @Dirk - 谢谢 - 我看了第一部分,没有注意到其他要求。
    • OP 提到他只想要匹配的数字。如果您删除了它不会匹配的可选标志,则 1 应该匹配。
    • @Carlos13 - 我不关注。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2014-04-29
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多