如何根据一定的标准在angularjs中使用正则表达式添加密码验证?

PHP*_*Fan 9 javascript validation angularjs ng-pattern angularjs-ng-pattern

我想验证用户输入的密码是否符合以下条件:

密码长度至少应为8个字符,并且应包含一个数字,一个字符和一个特殊字符.

为此我使用了以下正则表达式:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$
Run Code Online (Sandbox Code Playgroud)

我在angularjs代码中尝试了这个表达式,如下所示:

<md-input-container class="md-block" style="margin-top:0px;">
            <label>Password</label> <md-icon
                md-svg-src="/images/icons/ic_lock_black_24px.svg" class="name"></md-icon>
            <input type="password" ng-model="newUser.userPassword"
                name="userPassword" required 
                ng-pattern="^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$">
            <div
                ng-messages="registerForm.userPassword.$error">
                <div ng-message="pattern">Password should be atleast 8 characters long
                    and should contain one number,one character and one special
                    character</div>
                <div ng-message="required">Password should be atleast 8 characters
                    long and should contain one number,one character and one special
                    character</div>
            </div>
            </md-input-container>
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当密码字段为空并且焦点丢失时,将显示错误消息.如果用户输入的密码不符合我提到的标准,则不会显示错误消息.

我该如何解决这个问题?有人请帮帮我.

小智 18

据我了解你的问题.检查你的控制台它可能会因词汇错误而中断.

你忘记slash了ng-pattern的开始和结束.请用ng-pattern="/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/"

我创造了一个可以帮助你的插件. https://plnkr.co/edit/qCjp6a?p=preview