尝试验证ASP.Net Core中的密码字段。 如果密码不匹配正则表达式并且不匹配特定长度,我想将消息分开。
到目前为止,我已经在数据模型上进行了尝试:
[Required(ErrorMessage = "Le champs est obligatoire")]
[StringLength(30, MinimumLength = 10, ErrorMessage = "Password must contain from 10 to 30 characters")]
[RegularExpression("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d.*)(?=.*\\W.*)[a-zA-Z0-9\\S]{10,30}$", ErrorMessage ="Password must contain at least 1 uppercase, 1 lowercase, 1 digit and 1 special character")]
但是似乎从未达到StringLength属性。
如果我尝试使用其他密码,例如:P@ss1!
,则会从Regex属性而不是StringLength属性获得错误消息。
当然,如果我删除RegularExpression属性,则StringLength属性可以正常工作。
关于此的任何线索都很好:)
编辑:
<form asp-controller="Account" asp-action="EnterNewPassword" method="post">
@Html.AntiForgeryToken()
<input type="hidden" asp-for="ReturnUrl" />
<input asp-for="Token" type="hidden" />
<input asp-for="Email" type="hidden" />
<div class="col-12">
<div class="form-group">
<label asp-for="Password">Nouveau mot de passe</label>
<div class="password">
<input asp-for="Password" type="password" class="form-control" /><i class="icon-eye" data-js-showPassword=""></i>
<span asp-validation-for="Password" class="validation-error"></span>
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label asp-for="ConfirmPassword">Confirmation du mot de passe</label>
<div class="password">
<input asp-for="ConfirmPassword" type="password" class="form-control" /><i class="icon-eye" data-js-showPassword=""></i>
<span asp-validation-for="ConfirmPassword" class="validation-error"></span>
</div>
</div>
</div>
<div class="col-12 text-center">
<button type="submit" class="btn">Mettre à jour</button>
</div>
</form>