C# mvc数据注释正则表达式

C# mvc数据注释正则表达式,c#,asp.net-mvc,entity-framework,passwords,data-annotations,C#,Asp.net Mvc,Entity Framework,Passwords,Data Annotations,我刚开始摆弄正则表达式,但基本上这个(我在网上发现的)应该要求密码在8-10之间,但是每当我尝试并输入正确的长度时,它仍然显示错误消息。有什么想法吗? 我还需要在验证中包含1个小写、1个大写和1个数字 public class password : IValidatableObject { [Required] [RegularExpression("(?=^.{8,10}$)", ErrorMessage = "Password is invalid.")] publi

我刚开始摆弄正则表达式,但基本上这个(我在网上发现的)应该要求密码在8-10之间,但是每当我尝试并输入正确的长度时,它仍然显示错误消息。有什么想法吗? 我还需要在验证中包含1个小写、1个大写和1个数字

public class password : IValidatableObject
{
    [Required]
    [RegularExpression("(?=^.{8,10}$)", ErrorMessage = "Password is invalid.")]
    public string ConfirmPWD { get; set; }
    [Required(ErrorMessage="Confirm Password field is required.")]
    public string ConfirmPWD { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (ConfirmPWD != ConfirmPWD )
            yield return new ValidationResult("Not identical.");
    }
}
公共类密码:IValidatableObject
{
[必需]
[RegularExpression((?=^.{8,10}$)”,ErrorMessage=“密码无效。”)]
公共字符串ConfirmPWD{get;set;}
[必需(ErrorMessage=“确认密码字段是必需的。”)]
公共字符串ConfirmPWD{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext)
{
如果(ConfirmPWD!=ConfirmPWD)
返回新的ValidationResult(“不相同”);
}
}
试试
“{8,10}”
。此外,更具体的错误消息可能对用户有所帮助

编辑:想一想,为什么不直接使用
StringLengthAttribute
来处理这个

[StringLength(10,MinLength=8,ErrorMessage=“密码必须介于8到10个字符之间”)]


然后,您可以将正则表达式用于更具体的规则,如所需的复杂性。

您可能需要这样的规则:

[RegularExpression(@“^.{8,10}$”,

ErrorMessage=“必须在8到10个字符之间。”)]

好吧,我需要添加2-3个其他字符,我是否只需要在上面添加多个正则表达式?例如,1表示“密码至少需要1个大写字符”,1表示“密码至少需要1个数字字符”“,etci觉得我需要做一些ienumerable验证来检查它,我只是不知道怎么做..这可能对stringlength有效,但对于其余的,比如1个大写字母,1个小写字母,1个数字需要每个都有特定的消息,如果我把它全部放在一个正则表达式中,它只会给我一条errormessage,哪个是在该正则表达式行上指定的。