2011-11-18 45 views
0

我有一个文本字段,需要使用正则表达式进行验证。我的要求是如下:一个匹配25个字符并以数字开头的正则表达式

CCCCNNNNNNCCCCNNNNNNN(模板)

1234ABCDEFG123-ABCDEFG(例字符串)

规则:

  • 整个字符串是最多25个字符
  • 第一个fo乌尔字符(CCCC)必须是字母数字
  • CCCC是4个字符准确,可以是数字或数
  • CCCC可以具有短划线符号作为第四字符
  • NNNNNNNNNNNN可以长达21个字符和只有数字

Eg AAAA1234A58-是CCCC的有效字符串。

这里是我的研究笔记:

  • 我需要符合NUMERICS
  • 我将需要+字符到指定X倍匹配此模式
  • 我需要后,以匹配字母对于8-9位

有一个美好的岗位上正则表达式模式在这里:

Matching numbers with regular expressions — only digits and commas

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

+0

我删除了我的答案 - 请回去写一个明智的问题。 – ObscureRobot

+0

非常抱歉,我澄清了我的要求。希望这提供了我需要的更清晰的概念。 – nocarrier

+0

还不够:对我来说,“前四个字符(CCCC)必须是字母数字”意味着要么是“ABCD”要么是“1234”,并且要求“NNNNNNNNNNNN最多可以有21个字符,并且只有数字”与您的示例“1234ABCDEFG”冲突。那么,我需要匹配8-9个空格后的字母是什么意思呢? –

回答

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 

如果你想匹配的几种情况这个表达式将上面的表达式(减去断言)与任何允许分离这些值的东西(()) - 我选择\s或“空白”),然后使用+量词:

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

将匹配/验证以下输入:如果你想别的

1234567890 AAAA123456789GGG-123  hhh5 A1B2000000000 

,你要问一个更清晰的问题(有很多你的问题矛盾,重复,使得它极其令人困惑)

+0

中的评论形式谢谢,让我重新编辑我的问题,使其更清晰! – nocarrier

+0

最后我检查了一个标准的MaskedTextBox不使用正则表达式 –

+0

谢谢你尽管矛盾Code Jockey尽力回答这个问题;我已经清理了我的问题,为我的表达式验证规则提供了直接的要求。 – nocarrier

相关问题