我需要一个用于验证帐户代码的正则表达式字符串。代码是四个字符,必须以字母开头,然后是字母数字,然后是数字(即AC23
,D345
,CT75
)
我目前有以下声明会抛出错误
if (!Regex.Match(iLineItem.Code, @"^[A-Za-z0-9][A-Za-z0-9]*$").Success)
yield return new RuleViolation("Code has invalid format.", "Code");
如何将字符串更改为不允许A99A
作为代码?
提前致谢!
答案 0 :(得分:6)
^[a-zA-Z][a-zA-Z0-9][0-9]{2}$
由......组成。
^
字符串开头[a-zA-Z]
仅限字母字符[a-zA-Z0-9]
字母数字[0-9]{2}
仅限两位数字([0-9]
代表数字,{2}
代表“恰好2次”)$
字符串结尾答案 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]$
我绝对更喜欢前者(更具可读性,恕我直言),但唉,有时人们被迫使用这些限制。