正则表达式在C#中匹配2 alpha加6位数

use*_*464 2 c# regex

我需要一个regex匹配这个模式(使用C#)

我的匹配必须以2个字母字符(MA或CA)开头,并且必须以6或7位数字结尾; 例如CA123456或MA123456或MA1234567

这是我尝试过的:

Regex.IsMatch(StringInput, @"^[MA]{2}|^[CA]{2}\d{6,7}?")) 
Run Code Online (Sandbox Code Playgroud)

不幸的是,它似乎与大多数东西相匹配

Mar*_*ulz 5

试试这种模式:

^[MC]A\d{6,7}$
Run Code Online (Sandbox Code Playgroud)

前导字符类([MC])要求字符串的起始位置为Ma或a C.之后,\d{6,7}匹配6或7位数.


使用图形的问题是第一选择:^[MA]{2}与开头的字符串相匹配AA,AM,MA,或MM.它根本不需要任何后续数字.由于正则表达式引擎可以匹配像AA1234567(匹配子串AA)这样的字符串的第一个替代,它甚至不会尝试找到另一个匹配.这就是为什么

它似乎与大多数东西相匹配.