0

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

CCCCNNNNNNCCCCNNNNNNN(模板)

1234ABCDEFG123-ABCDEFG(示例字符串)

规则:

  • 整个字符串最多 25 个字符
  • 前四个字符 (CCCC) 必须是字母数字
  • CCCC 正好是 4 个字符,可以是数字或数字
  • CCCC 可以有一个破折号作为第 4 个字符
  • NNNNNNNNNNNN 最多可包含 21 个字符且只能包含数字

例如AAAA 1234 A58-是 CCCC 的有效字符串。

这是我的研究笔记:

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

这里有一篇关于 RegEx 模式的精彩文章:

用正则表达式匹配数字——只有数字和逗号

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

4

1 回答 1

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 AAAA123456789012345678901 GGG-123       hhh5   A1B2000000000

如果你想要别的东西,你必须问一个更清楚的问题(你的问题中有很多矛盾和重复,这使它非常混乱)

于 2011-11-18T20:27:21.157 回答