2013-05-14 62 views
2

我有我的Code First字符串字段,它可以包含兩個正則表達式中的一個:多的數據正則表達式驗證註釋

([0-5]\d):([0-5]\d)\,(\d{2}) 
or 
(\d{3}),(\d{2}) 

我怎麼能在一個領域結合起來呢?我嘗試使用自定義驗證。即使只輸入字母,字段驗證也是如此。我找不到我做錯了什麼。

[CustomResult] 
public string Resultstring { get; set; } 

public class CustomResultAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     if (value == null) 
     { 
      return false; 
     } 

     // 00:00,00 
     if (Regex.IsMatch(value.ToString(), @"([0-5]\d):([0-5]\d)\,(\d{2})")) 
     { 
      return true; 
     } 

     // 000,00 
     if (Regex.IsMatch(value.ToString(), @"(\d{3}),(\d{2})")) 
     { 
      return true; 
     } 
     return false; 
    } 
} 

回答

2

我認爲在這種情況下,你可以在你的正則表達式使用或|

([0-5]\d):([0-5]\d)\,(\d{2})|(\d{3}),(\d{2}) 

將這個成http://www.regexper.com/看到。

+0

哇,不敢相信我看了這個。非常感謝你!有效。 – 2013-05-14 09:01:38

3
using System.ComponentModel.DataAnnotations; 

[RegularExpression("^([0-5]\d:[0-5]\d,\d{2})|(\d{3},\d{2})$"] 
+0

@Aschratt我不同意。在OP給出的示例代碼中,他已經在使用數據註釋;這篇文章闡明瞭如何使用標準數據註釋來驗證正則表達式。 – Brinky 2014-10-27 18:15:45