7

以下の基準のためにユーザーが入力したパスワードを検証します。特定の基準に従ってangularjsの正規表現を使用してパスワード検証を追加するにはどうすればよいですか?

パスワードは少なくとも8文字で、数字は1文字、特殊文字は1文字でなければなりません。私は以下のように私のangularjsコードでこの表現しようとした

^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$ 

:それについては

は、私は次の正規表現を使用し、私の上記のコードでは、エラーメッセージが表示さ

<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)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{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> 

をする際、パスワードフィールド空白でフォーカスが失われます。ユーザーが上記の基準を満たさないパスワードを入力すると、エラーメッセージが表示されません。

この問題を解決するにはどうすればよいですか?誰か助けてください。

+0

カスタムディレクティブを作成することができ、同様のapporach ... http://stackoverflow.com/questions/36351760/directive-not-called-on-input-change/36352048#36352048 –

+0

@AnkitPundhirに従うことができます:実は私正規表現をng-patternで使用したいのです。 – user2839497

答えて

14

私があなたの問題を理解する限り。あなたのコンソールをチェックしてくださいそれは字句エラーで壊れているかもしれません。

ng-patternの先頭と末尾にslashを忘れました。 ご利用くださいng-pattern="/^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$/"

私はあなたを助けるかもしれない塊を作成しました。 https://plnkr.co/edit/qCjp6a?p=preview

2

だけのカップルは

1ノート)上記1つの冗長$が含まれています。それはあなたが、コントローラ内のパターンを定義したい場合は、

$scope.passwordStrength = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$/;<input ng-pattern="passwordStrength">

)それは空白に

3に入るのを防ぐよう^を先頭と$末尾削除しないでください)ng-pattern="/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$/"

2でなければなりません

決して

$scope.passwordStrength = "/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$/";

のパターンはRegExpオブジェクトであり、文字列ではありません。

希望すると、時間を節約するのに役立ちます。

関連する問題