я следующий код, чтобы проверить свойство класса: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». I, с использованием класса Regex следующим образом:
var isMatch = Regex.IsMatch(lbp.Lot, "^[A-z0-9]{6}$");
Вышеуказанный тест проходит. Что я здесь делаю неправильно? Есть ли какие-то ключи в RegularExpressionAttribute, которых я не знаю
Вы уверены, что [A-Z] является действительным ?? Разве вы не хотите использовать [A-Za-z0-9]? –
Что значит «проверка не удается», когда «a23456» проходит? Это 6-значная буквенно-цифровая строка, поэтому она должна пройти, не так ли? –