【问题标题】:Multiple RegularExpression attribute in MVC 4MVC 4 中的多个正则表达式属性
【发布时间】:2013-11-01 10:35:13
【问题描述】:

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

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

但我收到错误 Error Duplicate 'RegularExpression' 属性

如何为密码验证编码?

【问题讨论】:

    标签: asp.net-mvc-4 data-annotations


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。但是通过这种方式,我无法根据验证失败显示错误消息。
    • 正确,您必须使用更通用的消息,例如“密码必须包含小写字母、大写字母和数字。”
    • 如果这还不够好,您将需要创建一个自定义验证器并为其编写代码。然后您可以分别测试每个正则表达式并返回相应的消息。根据我的经验,这通常没有必要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多