2012-01-06 50 views
10

我已經寫了一個正則表達式,其應該使用以下規則驗證的字符串:C#正則表達式驗證規則使用Regex.Match()

  1. 前四個字符必須是字母數字。
  2. 的字母字符後面是6倍或7的數值爲10或11

的總長度因此字符串應該是這樣的,如果其有效的:

CCCCNNNNNN或CCCCNNNNNNN

C是任何字符而N是數字。

我的表情寫的是:@"^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$";

我正則表達式匹配的代碼如下所示:

var cc1 = "FOOBAR"; // should fail. 
var cc2 = "AAAA1111111111"; // should succeed 

var regex = @"^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$"; 

Match match = Regex.Match(cc1, regex, RegexOptions.IgnoreCase); 

if (cc1 != string.Empty && match.Success) 
{ 
    //"The Number must start with 4 letters and contain no numbers.", 
    Error = SeverityType.Error 
} 

我希望有人能來看看我的表情,並提供關於改進產生一些反饋有效匹配。

另外,我是否正確使用.Match()?如果Match.Successtrue,那麼這是否意味着該字符串是有效的?

回答

2

你的條件得到:

  1. 的前四個字符必須是字母數字[A-Za-z\d]{4}
  2. 其次6或7的數字值\d{6,7}

把它一起並將其定位:

^[A-Za-z\d]{4}\d{6,7}\z 

雖然這取決於你如何定義「字母數字」。此外,如果您使用忽略大小寫標誌,則可以從表達式中刪除A-Z範圍。

0

嘗試以下模式:

@"^[A-za-z\d]{4}\d{6,7}$" 
2

下面的代碼說明正則表達式的使用:

 var cc1 = "FOOBAR"; // should fail. 
     var cc2 = "AAAA1111111"; // should succeed 
     var r = new Regex(@"^[0-9a-zA-Z]{4}\d{6,7}$"); 
     if (!r.IsMatch(cc2)) 
     { 
      Console.WriteLine("cc2 doesn't match"); 
     } 
     if (!r.IsMatch(cc1)) 
     { 
      Console.WriteLine("cc1 doesn't match"); 
     } 

的輸出將是cc1 doesn't match