如何将多个正则表达式与不同的验证消息一起使用

How can I use multiple regex expressions with different validation messages

要求

我想使用多个正则表达式检查密码策略。 对于每个违反策略的行为,我都想显示一条特定的验证消息。

示例:

尝试

我尝试使用多个正则表达式 (Fluent Validation Match(string expression)),但是 ASP.NET MVC 不允许有多个正则表达式。

The following validation type was seen more than once: regex

问题

如何在 Fluent Validation 中使用多个正则表达式验证器?

您可以使用抽象验证器中定义的自定义方法:

public class UserValidator : AbstractValidator<User> {
   public UserValidator () {
       Custom(user => { 
           Regex r1 = define regex that validates that there are at least 2 numbers
           Regex r2 = define regex for upper and lower case letters
           string message = string.Empty;
           if(!r1.IsMatch(user.password))
           {
               message += "You need to use at least 2 numbers.";
           }
           if(!r2.IsMatch(user.password))
           {
               message += "You need to use at least one upper and one lower case letter.";
           }

           return message != string.Empty;
              ? new ValidationFailure("Password", message )
              : null; 
       });
   }
}