如何将多个正则表达式与不同的验证消息一起使用
How can I use multiple regex expressions with different validation messages
要求
我想使用多个正则表达式检查密码策略。
对于每个违反策略的行为,我都想显示一条特定的验证消息。
示例:
- 您至少需要使用 2 个号码
- 您需要至少使用一个大写字母和一个小写字母
- 您至少需要使用 8 个字母
- ...
尝试
我尝试使用多个正则表达式 (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;
});
}
}
要求
我想使用多个正则表达式检查密码策略。 对于每个违反策略的行为,我都想显示一条特定的验证消息。
示例:
- 您至少需要使用 2 个号码
- 您需要至少使用一个大写字母和一个小写字母
- 您至少需要使用 8 个字母
- ...
尝试
我尝试使用多个正则表达式 (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;
});
}
}