![](/img/trans.png)
[英]Regex - Match alpha characters that don't match a subset of alpha characters (C#)
[英]Regex match 2 alpha plus 6 digits in C#
我需要一個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 ),因此它甚至不會嘗試查找其他匹配項。 這就是為什么
它似乎可以匹配大多數東西。
我相信RegEx有很多用法。 在這種特殊情況下,使用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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.