使用formBuilder验证正则表达式时出错

时间:2018-08-24 16:38:01

标签: angular

我正在使用formBuilder来验证我的表单。我有一个名为password的字段,我想验证它是否至少需要一个letterone号码。例如123456789a必须被接受。我正在使用以下模式:

/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/

实际上,在此链接中可以看到它有效。

https://jsfiddle.net/Lqr5abx3/1/

var password = '123456789a'; 
var validation=/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/.test(password); 
// returns true
alert(validation)

但是在我的申请中,没有。我的div出现并显示错误

 this.register5 = formBuilder.group({password: [
     null,
     Validators.compose([
       Validators.required,
       Validators.minLength(7),
       Validators.maxLength(15),
       Validators.pattern('/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/')
     ])
   ]})

  <ion-item>
   <ion-label floating color="azul-2">Contraseña*</ion-label>
   <ion-input type="password" value="" [formControl]="createAccountService.register5.controls['password']"></ion-input>
  </ion-item>

  <div class="error-box" *ngIf="createAccountService.register5.controls['password'].hasError('pattern') && createAccountService.register5.controls['password'].touched">No is the format correct</div>

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

您是否尝试删除“ /”? 像这样

   Validators.pattern('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$')