Angular 6 - reactive form validation pattern doesn't work

10,790

You need to drop ('') and put (//) instead into parameter in your pattern method. It should be:

password: ['', [Validators.required, Validators.pattern(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/)]]
Share:
10,790
user2818430
Author by

user2818430

Updated on June 09, 2022

Comments

  • user2818430
    user2818430 about 2 years

    I have an Angular 6 reactive form and trying to validate a password with regex pattern and it doesn't work.

                   <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>
    

    The regex I am usng is like this:

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

    Whatever I enter in the password I get the error message in the ui Not valid

    Any idea what I am doing wrong?