Asp.net mvc 如何使用多个带有不同验证消息的正则表达式

Asp.net mvc 如何使用多个带有不同验证消息的正则表达式,asp.net-mvc,validation,asp.net-mvc-5,passwords,fluentvalidation,Asp.net Mvc,Validation,Asp.net Mvc 5,Passwords,Fluentvalidation,要求 我想使用多个正则表达式检查密码策略。 对于每个策略冲突,我希望显示一条特定的验证消息 示例: 您至少需要使用2个数字 您至少需要使用一个大写字母和一个小写字母 您至少需要使用8个字母 尝试 我尝试使用多个正则表达式(Fluent ValidationMatch(string expression)),但ASP.NET MVC不允许有多个正则表达式 以下验证类型被多次看到:regex 问题 如何在Fluent验证中使用多个正则表达式验证器?您可以使用抽象验证器中定义的自定义方法: pu

要求

我想使用多个正则表达式检查密码策略。 对于每个策略冲突,我希望显示一条特定的验证消息

示例:

  • 您至少需要使用2个数字
  • 您至少需要使用一个大写字母和一个小写字母
  • 您至少需要使用8个字母
尝试

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

以下验证类型被多次看到:regex

问题


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

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

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; 
       });
   }
}
公共类UserValidator:AbstractValidator{
公共用户验证程序(){
自定义(用户=>{
Regex r1=定义验证至少有2个数字的Regex
Regex r2=定义大小写字母的Regex
string message=string.Empty;
如果(!r1.IsMatch(user.password))
{
message+=“您至少需要使用2个数字。”;
}
如果(!r2.IsMatch(user.password))
{
message+=“您至少需要使用一个大写字母和一个小写字母。”;
}
返回消息!=string.Empty;
?新验证失败(“密码”,消息)
:null;
});
}
}

这是否也会转化为客户端(JS)验证?事实并非如此。如果需要客户端验证,则必须创建一个生成客户端规则的类。看看这个答案: