2016-10-17 2 views
2

У меня возникла проблема с подтверждением того, что пароль, введенный в моей угловой форме 2, содержит в нем хотя бы одно число. Другие валидаторы работают только с этим шаблоном. регулярное выражение, я использую я получил от Regex: Check if string contains at least one digit Угловая проверка проверки формы на номер

Пароль:

<div *ngIf="signUpForm.controls['password'].invalid && signUpForm.controls['password'].dirty"> 
     <small *ngIf="signUpForm.controls['password'].errors.minlength"> 
          Please enter a minimum of 6 characters 
         </small> 
     <small *ngIf="signUpForm.controls['password'].errors.maxlength"> 
          Password cannot exceed 15 characters 
         </small> 
     <small *ngIf="signUpForm.controls['password'].errors.pattern"> 
          Must contain digits 
         </small> 
</div> 

в моей форме У меня есть следующий валидатор и, в частности шаблона я хочу, чтобы проверить, если введена строка содержит ряд

"password":["", [ 
       Validators.required, 
       Validators.minLength(6), 
       Validators.maxLength(15), 
       Validators.pattern('/\d') 
      ] 
     ] 

Error.patters ngIf никогда не исчезает, даже если в поле есть цифры, не уверен, что я делаю неправильно. Могут использоваться другие валидаторы шаблонов для других полей.

ответ

0

Ваш шаблон \d будет работать только на одну цифру. Вам нужно добавить квантификатор.

\d+ 

Это будет соответствовать одной или нескольким цифрам, но не пустому.

+0

Я попытался это, а не повезло – pwborodich

1

Как насчет Validators.pattern('\\d+')?

Если я правильно понимаю это, вам нужно будет обеспечить обратную косую черту (а не косую черту), чтобы избежать обратной косой черты.

Написано в виде регулярного выражения буквальное, это будет выглядеть как /\d+/, но я не думаю, что Angular 2 поддерживает их.

UPDATE Если это не работает, то это должно быть что-то с вашей установкой или ошибкой в ​​угловых 2. Я не использую Угловой 2 лично так трудно сказать, но вы можете увидеть сам регулярное выражение прекрасно:

const regex = new RegExp('\\d+', 'g') 
 
console.info('hiwefwe883290awefoijwfe8382jfwef'.match(regex))

+0

Нету не работает для меня либо – pwborodich

+0

это решение должно работать .. это MaxLength, что не работает. Я могу ввести более 15 символов – gerl

Смежные вопросы