簡體   English   中英

正則表達式在C#中匹配2個字母加上6個數字

[英]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] )在字符串的開頭需要MC 之后, \\d{6,7}匹配6或7位數字。


模式的問題是第一種選擇: ^[MA]{2}匹配任何以AAAMMAMM開頭的字符串。 它根本不需要任何以下數字。 由於正則表達式引擎可以匹配字符串AA1234567的第一個替代 (匹配子字符串AA ),因此它甚至不會嘗試查找其他匹配項。 這就是為什么

它似乎可以匹配大多數東西。

我相信RegEx有很多用法。 在這種特殊情況下,使用C#的內置字符串函數可能是一個更好的選擇:

  1. 必須以MA或CA開頭
  2. 必須以至少6位數字結尾(如果有7位數字,那么將有6位數字)
  3. 組合1和2,字符串必須至少包含8個字符

這將是基於上述規則的字符串版本:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM