2013-11-01 43 views
1

在我的MVC 4应用程序中,我需要验证帐户注册屏幕;密码至少包含1位数,1位大写字母& 1小写字母。我想有模型类属性类似MVC 4中的多个RegularExpression属性4

[Display(Name = "Register_Password", ResourceType = typeof(VirtuOxAdmin))] 
    [Required(ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Register_PasswordRequired")] 
    [MinLength(5, ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Admin_CreateCustomer_PasswordMinLength")] 
    [MaxLength(32, ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Admin_CreateCustomer_PasswordMaxLength")] 
    [RegularExpression(@"\d", ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Admin_CreateCustomer_AtleastOneDigit")] 
    [RegularExpression("[A-Z]+", ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Admin_CreateCustomer_AtleastOneUChar")] 
    [RegularExpression("[a-z]+", ErrorMessageResourceType = typeof(VirtuOxAdmin), ErrorMessageResourceName = "Admin_CreateCustomer_AtleastOneLChar")] 
    public string Password { set; get; } 

但我得到的错误错误重复“正则表达式”属性

如何为密码验证码?

回答

1

您必须将所有元素合并为一个正则表达式。为此,您可以使用零宽度前瞻断言。像这样的东西应该工作:

(?=.*[a-z])(?=.*[A-Z])(?=.*\d) 
+0

感谢您的回复。但通过这样做,我无法显示基于哪个验证失败的错误消息。 – Shaggy

+0

正确,您将不得不使用更通用的消息,如“密码必须包含小写字母,大写字母和数字”。 – acfrancis

+1

如果这还不够好,您需要创建一个自定义验证器并为其编写代码。然后,您可以分别测试每个正则表达式并返回相应的消息。根据我的经验,通常没有必要。 – acfrancis