此webApi PasswordValidator的等效正则表达式

时间:2015-08-31 22:30:26

标签: regex angularjs validation asp.net-web-api passwords

我想在使用Regex提交表单之前验证密码,我想知道以下PasswordValidator设置的等效正则表达式是什么:

        UserManager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = false,
            RequireLowercase = true,
            RequireUppercase = true,
        };

即时使用AngujarJS模式验证。 例如:

 <input type="password" class="form-control" name="inputPassword" ng-minlength="6" np-pattern="/^(?=.*[a-z])(?=.*[A-Z])(?=.*(_|[^\w])).+$/" ng-model="userData.Password" />
<p class="alert-danger" ng-show="userDetails.inputPassword.$error.pattern">The Password is invalid</p> 

但它完全忽略了它。

非常感谢!

更新1 在接受的答案的帮助下,我来到以下正则表达式^(?=。 [az])(?=。 [AZ])(?=。*(_ | [^ \ w]) )。+ $并且将长度验证添加为ng-minlength =“6”由于某种原因,模式验证在IE9上不起作用,其中验证阻止用户保存,使其完全无用。

更新2

通过stribizhev建议,将任意符号正则表达式更改为(?=。* [\ W_])修复了IE9验证,因此它在IE9中100%工作,最终代码为

<input type="password" class="form-control" name="inputPassword" ng-minlength="6" ng-pattern="/^(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).+$/" ng-model="userData.Password" />
<p class="alert-danger" ng-show="userDetails.inputPassword.$error.pattern || userDetails.inputPassword.$error.minlength">The Password is invalid</p> 

非常感谢你

1 个答案:

答案 0 :(得分:1)

^(?=.*[!@#$&*])(?=.*[a-z])(?=.*[A-Z]).{6,}$

我在SO上找到答案会给你提示如何构建自己的正则表达式https://stackoverflow.com/a/5142164/2892208