Почему использовав pattern, он санкционирует мне какие-то пароли?

У меня есть поле password и главный файл, но только он санкционирует мне какие-то пароли.

Политика pattern:

  • Минимум 8 символов
  • Заглавная буква
  • Строчная буква
  • Специальный символ (!#$%&/()?¡_-)

Я использую framework Ionic 2.

Я делаю утверждение так:

public passRegex ="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" return this.formBuilder.group({
  correo: ['',Validators.compose([Validators.required,Validators.pattern(this.emailRegex)])],
  confirmarEmail: ['',Validators.compose([Validators.required,Validators.pattern(this.emailRegex)])],
  passwordRetry: this.formBuilder.group({
    clave: ['', [Validators.pattern(this.passRegex)]],
    passwordConfirmation: ['', [Validators.pattern(this.passRegex)]]
  },{validator:this.compararPass('clave','passwordConfirmation')})
},{validator:this.compararEmail('correo','confirmarEmail')});

Если я размещаю цепь Ejemploj#240518 функционируй, но если я размещаю Pruebaenki#123456 не работает.

ionic info:
Your system information:

Cordova CLI: 6.4.0
Ionic Фрамеворк Версион: 2.0.0-rc.2
Ionic CLI Версия: 2.1.8
Ionic Апп Либ Версия: 2.1.4
Ionic Апп Скриптс Версия: 0.0.43
ios-deploy версия: Not installed
ios-sim версия: Not installed
ВЫ: Linux 4.8
Node Версия: v6.5.0
Xcode версия: Not installed

2
задан 14.01.2017, 01:28
0 ответов

Следующее регулярное выражение совпадает с string по крайней мере 8 символов, с 1 строчной буквой, 1 прописной буквой, и символом между !#$%&/()?¡_-. Он не считает буквы с тильдой, ñ или диакритические другие как мелкая или прописная.

Regex:

(?=.*[-!#$%&/()?¡_])(?=.*[A-Z])(?=.*[a-z]).{8,}

Описание:

Давайте помнить, что с PatternValidator регулярное выражение сравнится против всего string, которым уже она брошена якорь в ^ (начало) и $ (конец текста).

  • (?=.*[-!#$%&/()?¡_]) - Это положительное утверждение (positive lookahead), что совпадает со следующим выражением, не тратя символов (и потом он возвращается в положение, в котором он был перед тем, как это пробовать):

    • .* - 0 или более символов
    • [-!#$%&/()?¡_] - Это класс символов (character class), что совпадает с 1 характером (1 символ тех, которые находятся между квадратными скобками).
  • (?=.*[A-Z]) - Положительное утверждение, которое совпадает с любым характером и потом 1 прописная буква. Давайте помнить, что, как до настоящего времени не был потрачен никакой характер, мы продолжаем быть попробованными с начала текста.

  • (?=.*[a-z]) - Положительное утверждение, которое совпадает с любым характером и потом 1 строчная буква. Давайте помнить, что, как до настоящего времени не был потрачен никакой характер, мы продолжаем быть попробованными с начала текста.

  • .{8,} - Точка совпадает с любым характером (кроме \n). С {8,} мы повторяем предыдущую структуру между 8 или более разами. А именно, что совпадает с 8 или более (любыми) символами, чтобы подтверждать длинный минимум.

Demo:

https://regex101.com/r/VUXm3b/2

2
ответ дан 03.12.2019, 17:44

Теги

Похожие вопросы