web-dev-qa-db-ja.com

Angular 6-反応フォーム検証パターンが機能しません

Angular 6の反応フォームがあり、正規表現パターンでパスワードを検証しようとしていますが、機能しません。

               <div class="form-group">
                    <label for="password">Password</label>
                    <input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }"
                    />
                    <div *ngIf="submitted && f.password.errors" class="invalid-feedback">
                        <div *ngIf="f.password.errors.required">Required</div>
                        <div *ngIf="f.password.errors.pattern">Not valid</div>
                    </div>
                </div>

私が使用している正規表現は次のとおりです:

 ngOnInit() {
     this.registerForm = this.formBuilder.group({
           password: ['', [Validators.required, Validators.pattern('^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$')]],

      });
  }

パスワードに何を入力しても、UIにエラーメッセージが表示されますNot valid

私が間違っていることは何か考えていますか?

4
user2818430

代わりに、パターンメソッドのパラメーターにドロップ( '')および配置(//)する必要があります。そのはず:

password: ['', [Validators.required, Validators.pattern(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/)]]
7
Vlada Veljkovic

次の例のように、dの前に2番目のバックスラッシュを置き、 '^'と '$'を削除する必要があります。

'(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}'
0
N. Richli