一个匹配25个字符并以数字开头的正则表达式

时间:2011-11-18 19:57:26

标签: regex regular-language maskedtextbox

我有一个文本字段,我需要使用正则表达式进行验证。我的要求如下:

  

CCCCNNNNNNCCCCNNNNNNN(模板)

     

1234ABCDEFG123-ABCDEFG(示例字符串)

规则:

  • 整个字符串最多25个字符
  • 前四个字符(CCCC)必须是字母数字
  • CCCC完全是4个字符,可以是数字或数字
  • CCCC可以在第4个字符
  • 上加上破折号
  • NNNNNNNNNNNN最多可包含21个字符,且只能包含数字

E.g。 AAAA 1234 A58-是CCCC的有效字符串。

这是我的研究笔记:

  • 我需要先匹配数字
  • 我需要+字符来指定匹配此模式X次
  • 我需要在那之后匹配8-9个空格的字母

这里有关于RegEx模式的精彩帖子:

Matching numbers with regular expressions — only digits and commas

我的目标是将此REGEX模式应用于WinForms应用程序中的文本框Mask。

1 个答案:

答案 0 :(得分:3)

...

...

...是的 - 我认为您正在寻找的答案(我强调“ 认为 ”)就是这样的表达式:

^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$

这就是:

^               # assert beginning (not in the middle)
[0-9A-Za-z]{3}  # three characters that are: 0-9 or a-z (upper or lower)
[0-9A-Za-z-]    # one character that is: 0-9 or a-z (upper or lower) or a dash
\d{0,21}        # anywhere from 0 to 21 digits
$               # assert at the end (not somewhere in the middle

如果要匹配此表达式的多个案例,请将上述表达式(减去断言)放入parantheses(())以及允许分隔这些值的任何内容 - 我选择\s或“whitespace”)然后使用+量词:

^([0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}\s+)+$

将匹配/验证以下输入:

1234567890 AAAA123456789012345678901 GGG-123       hhh5   A1B2000000000

如果你想要别的东西,你将不得不提出一个更清晰的问题(你的问题中存在很多矛盾和重复,这使得它非常混乱)