使用ng-pattern

时间:2016-12-01 15:48:52

标签: javascript angularjs regex

我想使用ng-pattern验证密码。我在我的模型中使用相同的正则表达式,它的工作原理。如果密码无效,我想显示错误消息(至少7个字符,其中一个必须是数字)。

我已将正则表达式添加到ng-pattern,但它只显示错误消息,如果密码短于7个字符(因为我使用ng-minlength),并且它没有显示,如果密码格式也不正确。有人可以帮我弄清楚它为什么会发生吗?

型号:

    [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{7,}$", ErrorMessage = "Máte příliš krátké heslo (minimum je 7 znaků), popř. vaše heslo není ve správném tvaru.")]
    [Required(ErrorMessage = "Zadejte prosím Vaše heslo.", AllowEmptyStrings = false)]
    public string Password { get; set; }

Registration.cshtml:

    <input type="password" style="width: 600px" class="form-control" name="Password" id="Password" ng-pattern="^(?=.*[a-z])(? =.*[A-Z])(? =.*\d)[a-zA-Z\d]{7,}$" ng-model="User.Password" ng-minlength="7" ng-class="submitted?'ng-dirty':''" required />
                    <span class="error" ng-show=" (form.Password.$dirty || submitted) && form.Password.$error.required">Zadejte prosím Vaše heslo.</span>
                    <span class="error" ng-show=" (form.Password.$dirty || submitted) && (form.Password.$error.minlength || form.Password.$error.pattern)">Máte příliš krátké heslo (minimum je 7 znaků), popř. vaše heslo není ve správném tvaru.</span>
                    <span class="success" ng-show=" (form.Password.$dirty || submitted) && form.Password.$valid">Vaše heslo má dostatečnou délku a je ve správném tvaru.</span>

2 个答案:

答案 0 :(得分:5)

您必须在正则表达式之前和之后使用/,并且正如@MikeMcCaughan所指出的那样,删除正向前方中的任何空格。例如,将(? =更改为(?=

ng-pattern="/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{7,}$/"

答案 1 :(得分:1)

将模式更改为/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{7,}$/

<input type="password" style="width: 600px" class="form-control" name="Password" id="Password" ng-pattern="/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{7,}$/" ng-model="User.Password" ng-minlength="7" ng-class="submitted?'ng-dirty':''" required />
                <br/>
                <span class="error" ng-show=" (form.Password.$dirty || submitted) && form.Password.$error.required">Required</span>
                <span class="error" ng-show=" (form.Password.$dirty || submitted) && form.Password.$error.minlength">Mini 7 characters</span>
                <span class="success" ng-show=" (form.Password.$dirty || submitted) && form.Password.$error.pattern">Invalid</span>

查看演示链接https://plnkr.co/edit/Xo1qfEHS2NrdUHyHDjml?p=preview

相关问题