Angular 9 - Validators.pattern ('^ [0-9] [0-9] [0-9] $') не соответствует ведущему 0, например 012 - PullRequest
0 голосов
/ 22 апреля 2020

для проверки простого ПИН-кода, который может содержать начальный 0, я написал следующее очень простое регулярное выражение:

^[0-9][0-9][0-9][0-9][0-9][0-9]$

Этот алгоритм работает, как и ожидалось, на различных онлайн-инструментах регулярного выражения, которые я пробовал, однако , он не работает в Angular валидаторе, потому что ведущий 0 не считается как ди git:

  PIN = new FormControl('', [
    Validators.required,
    Validators.minLength(6),
    Validators.maxLength(6),
    Validators.pattern('^([0-9][0-9][0-9][0-9][0-9][0-9])$'),
  ]);

  formPINGroup = this.formBuilder.group({
    PIN: this.PIN,
  });

Я не могу понять это, несмотря на различные форумы, которые я просматривал , люди всегда ищут противоположности.

Если Angular эксперт видит этот пост, его помощь приветствуется!

А пока позаботьтесь!

РЕДАКТИРОВАТЬ:

Я создал Stackblitz, если вы хотите что-то попробовать: https://stackblitz.com/edit/angular-zzsjn1

вот три результата:

  • первое не в порядке из-за начального 0
  • второе в порядке, потому что я добавил число 6, в конце
  • последнее неверно, очевидно.

enter image description here

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема в элементе ввода HTML5. Попробуйте изменить type = "number" на type = "tel" в hello-component.ts (по вашей ссылке). С его помощью вы все еще можете технически ввести несколько нечисловых c символов, но только ваш шаблон из 6 цифр (с ведущими нулями или без них) будет подтвержден. Смотри также эту тему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...