Shaggy
Shaggy

Reputation: 315

Multiple RegularExpression attribute in MVC 4

In my MVC 4 application I need to validate on account registration screen; password for containing at least 1 digit, 1 uppercase & 1 lowercase charater. I want to have model class property something like

[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; }

But I am getting error Error Duplicate 'RegularExpression' attribute

How can I code for password validation?

Upvotes: 2

Views: 4675

Answers (1)

acfrancis
acfrancis

Reputation: 3681

You have to combine all the elements into a single regex. To do that, you can use zero-width look ahead assertions. Something like this should work:

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

Upvotes: 4

Related Questions