我想使用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>
答案 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>