C# 即使字符串匹配,正则表达式验证也会显示错误

C# 即使字符串匹配,正则表达式验证也会显示错误,c#,regex,asp.net-mvc,validation,data-annotations,C#,Regex,Asp.net Mvc,Validation,Data Annotations,问题是, 当存在另一条验证消息时,我的视图上的正则表达式验证消息就会显示出来,即使字符串与表达式匹配,并且似乎是由其他验证消息触发的,也会出现这种情况 View [Required] [DataType(DataType.Password)] [RegularExpression(@"^(?=.{8})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", ErrorMessage = "message")] [Display(Name = "New

问题是,

当存在另一条验证消息时,我的视图上的正则表达式验证消息就会显示出来,即使字符串与表达式匹配,并且似乎是由其他验证消息触发的,也会出现这种情况

View 

    [Required]
    [DataType(DataType.Password)]
    [RegularExpression(@"^(?=.{8})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", ErrorMessage = "message")]
    [Display(Name = "New Password")]
    public string NewPassword { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Compare("NewPassword")]
    [Display(Name = "Confirmation Password")]
    public string NewPasswordConfim { get; set; }
在上面的模型中,我有一个正则表达式,它应该强制使用1个小写、1个大写和1个数字字符的密码,另一个验证是将密码确认与新密码字段进行比较

当字符串有效或确认字段与新密码字段匹配时,reg表达式/val消息起作用,但如果确认字段不匹配,则显示两条验证消息

Controler

    if (Regex.IsMatch(model.NewPassword, @"^(?=.{8})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)"))
            {
                if (model.NewPassword != model.NewPasswordConfim)
                {
                    return View("PasswordResetVerification", model);
                }
            }
在我的控制器中,我添加了一个检查,以确保reg表达式有效(作为测试),并且该检查显示,当字符串与表达式匹配,但确认密码字段与新密码字段不匹配时,reg表达式错误消息仍错误显示

View

   <div class="form-group">
                <label class="col-md-2 control-label" for="NewPassword">New Password</label>
                <div class="col-md-4">
                    <input type="password" class="form-control" id="NewPassword" name="NewPassword" placeholder="Password" value="@Model.NewPassword" />
                    @Html.ValidationMessageFor(m => m.NewPassword)
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label" for="NewPasswordConfim">Confim New Password</label>
                <div class="col-md-4">
                    <input type="password" class="form-control" id="NewPasswordConfim" name="NewPasswordConfim" placeholder="Confim Password" value="@Model.NewPasswordConfim" />
                    @Html.ValidationMessageFor(m => m.NewPasswordConfim)
                </div>
            </div>
视图
新密码
@Html.ValidationMessageFor(m=>m.NewPassword)
确认新密码
@Html.ValidationMessageFor(m=>m.NewPasswordConfim)

我认为您的正则表达式有问题,我检查过它不能正常工作。。 我试过了

试试这个正则表达式
^(?=.*\d)(?=.*[A-Z])。{8,20}$

工作示例

您尝试输入的密码是什么?谢谢,我将我的正则表达式更改为以下
^(?=.*\d)(?=.[A-Z])(?=.[A-Z])。{8,20}$'