Вот что я бы сделал.Создайте регулярные выражения для каждого условия, которое необходимо проверить, присутствует ли соответствующее значение.
т.е. регулярное выражение для проверки наличия в нем одной заглавной буквы, одной строчной буквы, одного целого и одного специального символа и т. Д..
и затем используйте ту же строку для проверки каждого регулярного выражения, если все они возвращают true, если у вас есть победитель, если нет, то строка не соответствует вашим критериям.
// Пример дляValidating UpperCaseLetter делает то же самое для всех остальных с соответствующим регулярным выражением.
-(BOOL) validateOneUpperCaseLetter:(NSString *)string {
if ((string == nil) || ([string isEqualToString: @""])) {
return NO;
}
// Change this regEx to one you needed. // this one validates for the "name".
NSString *regEx = @"^[a-zA-Z]+(([\\'\\,\\.\\ -][a-zA-Z])?[a-zA-Z]\\s*)*$";
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regEx];
BOOL myStringMatchesRegEx = [regExPredicate evaluateWithObject: string];
if (!myStringMatchesRegEx) {
return NO;
}
return YES;}