C# 正则表达式匹配2个字母加上C中的6个数字#
我需要一个C# 正则表达式匹配2个字母加上C中的6个数字#,c#,regex,C#,Regex,我需要一个regex来匹配这个模式(使用C#) 我的匹配必须以2个字母字符(MA或CA)开始,并且必须以6或7个数字结束;如CA123456或MA123456或MA1234567 以下是我尝试过的: Regex.IsMatch(StringInput, @"^[MA]{2}|^[CA]{2}\d{6,7}?")) 不幸的是,它似乎与大多数东西都匹配请尝试以下模式: ^[MC]A\d{6,7}$ 前导字符类([MC])要求在字符串的开头有M或C。之后,\d{6,7}匹配6位或7位数字 模式
regex
来匹配这个模式(使用C#)
我的匹配必须以2个字母字符(MA或CA)开始,并且必须以6或7个数字结束;如CA123456或MA123456或MA1234567
以下是我尝试过的:
Regex.IsMatch(StringInput, @"^[MA]{2}|^[CA]{2}\d{6,7}?"))
不幸的是,它似乎与大多数东西都匹配请尝试以下模式:
^[MC]A\d{6,7}$
前导字符类([MC]
)要求在字符串的开头有M
或C
。之后,\d{6,7}
匹配6位或7位数字
模式的问题是第一种选择:
^[MA]{2}
匹配以AA
、AM
、MA
或MM
开头的任何字符串。它根本不需要以下任何数字。由于正则表达式引擎可以为类似AA1234567的字符串(匹配子字符串AA)匹配第一个备选字符串,因此它甚至不会尝试找到另一个匹配。这就是为什么
它似乎和大多数东西都相配
我相信正则表达式有很多用法;在这种特殊情况下,使用C#的内置字符串函数可能是更好的选择:
public static bool IsValid( string str )
{
if( str.Length < 8 )
{
return false;
}
if( !str.StartsWith( "CA" ) && !str.StartsWith( "MA" ) )
{
return false;
}
int result;
string end = str.Substring( str.Length - 6 );
bool isValid = int.TryParse( end, out result );
return isValid;
}
公共静态bool有效(字符串str)
{
如果(str.Length<8)
{
返回false;
}
如果(!str.StartsWith(“CA”)和&!str.StartsWith(“MA”))
{
返回false;
}
int结果;
字符串结束=str.Substring(str.Length-6);
bool isValid=int.TryParse(结束,输出结果);
返回有效;
}
对此非常感谢@用户2976464很高兴我能帮忙。如果这个答案解决了你的问题,请务必接受。