Проверка строки с использованием REGEX с Objective-C (вариант использования пароля) - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь подтвердить пароль с помощью регулярного выражения с target-c. Я искал около 4-5 различных ответов на переполнение стека по этой теме, и по какой-то причине он все еще дает мне тот же результат.

Строка должна содержать минимум:

  • 8 символов в строке {8,20} (максимум 20 символов)
  • 1 заглавный символ [A-Z]
  • 1 строчный символ [a-z]
  • 1 число [0-9] ! порядок их должен быть неспецифическим

Это также может быть логической ошибкой, которая разорвет мою душу на части, потратив на это несколько часов. Я «довольно» уверен, что это не так хорошо… это может быть.

Вот моя функция проверки:

- (BOOL) validPassword:(NSString *) passwordString {
    NSString *passwordRegex = @"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,20}"; //regex string condition
    NSPredicate *passwordValidation = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex];
    return [passwordValidation evaluateWithObject:passwordRegex];
}

Здесь я вызываю функцию:

if (![self validPassword:self.passwordTextField.text]) { //if password is invalid
        //display feedback to user
    } else { //if password is valid
        //create a user
    }

Заранее спасибо!

Приветствия

1 Ответ

0 голосов
/ 27 апреля 2018

Вы проверяете, совместим ли шаблон с самим собой, вместо проверки пароля:

return [passwordValidation evaluateWithObject:passwordRegex];

=>

return [passwordValidation evaluateWithObject:passwordString];

Если бы вы назвали свои переменные по-другому:

- (BOOL)validPassword:(NSString *)stringToValidate {
    NSString *pattern = @"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,20}"; //regex string condition
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    return [predicate evaluateWithObject:stringToValidate];
}

Это могло бы быть более очевидным.

Поскольку вы работаете с небольшим методом с 2 переменными и 1 параметром, называя вашу переменную, начинающуюся с той же последовательности ( пароль FollwedBySomething), становится труднее увидеть, когда вы поместили одну из них на место.

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