我有以下代碼來測試一類屬性:RegularExpressionAttribute總是失敗
public class RegExtTest
{
[RegularExpression(@"^[A-z0-9]{6}$", ErrorMessage = "Lot must be 6 characters alphanumeric")]
public string Lot { get; set; }
}
和通用延伸方法來驗證包含這些對象
public static IEnumerable<string> ValidateObject(this object objectToValidate)
{
var result = new List<string>();
var objType = objectToValidate.GetType();
var properties = objType.GetProperties();
foreach (var propertyInfo in properties)
{
var attrs = propertyInfo.GetCustomAttributes(typeof(ValidationAttribute), true);
foreach (var attribue in attrs)
{
try
{
var validationAttr = attribue as ValidationAttribute;
if (validationAttr != null)
{
validationAttr.Validate(objectToValidate,propertyInfo.Name);
}
}
catch (Exception e)
{
if (e is ValidationException)
result.Add(e.Message);
}
}
}
return result;
}
然而驗證失敗時的一個或多個類值是「a23456」。我使用正則表達式對此進行了如下測試:
var isMatch = Regex.IsMatch(lbp.Lot, "^[A-z0-9]{6}$");
上述測試通過。 我在這裏做錯了什麼?在RegularExpressionAttribute中是否有一些問題我不知道
是否確定[A-Z]是否有效?你不想使用[A-Za-z0-9]嗎? –
當'a23456'通過時,你的意思是「驗證失敗」?這是一個6個字符的字母數字字符串,所以它應該通過,不是嗎? –