AA99模式的正则表达式

时间:2009-12-16 03:27:58

标签: c# asp.net regex

我需要一个用于验证帐户代码的正则表达式字符串。代码是四个字符,必须以字母开头,然后是字母数字,然后是数字(即AC23D345CT75

我目前有以下声明会抛出错误

if (!Regex.Match(iLineItem.Code, @"^[A-Za-z0-9][A-Za-z0-9]*$").Success)
    yield return new RuleViolation("Code has invalid format.", "Code");

如何将字符串更改为不允许A99A作为代码?

提前致谢!

4 个答案:

答案 0 :(得分:6)

^[a-zA-Z][a-zA-Z0-9][0-9]{2}$

由......组成。

  1. ^字符串开头
  2. [a-zA-Z]仅限字母字符
  3. [a-zA-Z0-9]字母数字
  4. [0-9]{2}仅限两位数字([0-9]代表数字,{2}代表“恰好2次”)
  5. $字符串结尾

答案 1 :(得分:4)

我认为你需要

"^[A-Za-z][A-Za-z0-9][0-9]{2}$"

根据您的说明:

  

代码是四个字符,必须以alpha开头,然后是字母数字,然后是数字...

^[A-Za-z]为您提供一个alpha字符串的开头。

[A-Za-z0-9]为您提供一个字母数字。

[0-9]{2}$在字符串的末尾给你两个数字。

答案 2 :(得分:1)

你想要的表达是

^[a-z][a-z0-9][0-9][0-9]$

确保使用“不区分大小写”标记。

答案 3 :(得分:1)

我投票最简洁:

i^[a-z][a-z0-9]\d{2}$

开头的i表示“不区分大小写”,因此您不必拥有一堆A-Za-z个。有些方言的旗帜不同,所以请确保你做得对。

\d表示“单个数字”。它与[0-9]相同。但是,有些方言无法识别,所以如果你的方言没有,请改用[0-9]

最后,一些(非常有限的)方言不接受{2}(这意味着“恰好两次”)。如果您没有,则需要\d\d

所以,既然你已经看到了最简洁,这里最简洁(但仍然相当),只有当你的方言非常有限且不能识别任何这些捷径时,你才应该使用它们:

^[A-Za-z][A-Za-z0-9][0-9][0-9]$

我绝对更喜欢前者(更具可读性,恕我直言),但唉,有时人们被迫使用这些限制。