Регулярное выражение для пароля в iPhone - PullRequest
4 голосов
/ 01 апреля 2011

Я довольно слаб в создании регулярных выражений. Так что я здесь.

Мне нужно регулярное выражение, удовлетворяющее следующему.

  1. Для пароля должно присутствовать по крайней мере одно числовое значение и по умолчанию один алфавит
  2. Минимум 6 Максимум 32 символа должны быть разрешены.

Спасибо

Ответы [ 5 ]

18 голосов
/ 01 апреля 2011
 -(BOOL) isPasswordValid:(NSString *)pwd {
     if ( [pwd length]<6 || [pwd length]>32 ) return NO;  // too long or too short
     NSRange rang;
     rang = [pwd rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
     if ( !rang.length ) return NO;  // no letter
     rang = [pwd rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]];
     if ( !rang.length )  return NO;  // no number;
     return YES;
 }

Это явно не регулярное выражение, но imo regex излишне для этого.

10 голосов
/ 01 апреля 2011

Попробуйте это:

^(?=.*\d)(?=.*[A-Za-z]).{6,32}$
2 голосов
/ 01 апреля 2011

Без использования сторонних библиотек, таких как Regexkit, вы можете проверить свои требования следующим образом:

    if ([[password rangeOfCharacterFromSet: [ NSCharacterSet alphanumericCharacterSet]] &&
         [password rangeOfCharacterFromSet: [NSCharacterSet characterSetWithCharactersInString: @"0123456789"]] && 
        (6 < [password length]) && [password length] < 32)) {
              NSLog(@"acceptable password");
        }
1 голос
/ 01 апреля 2011

Следующие элементы должны соответствовать минимальным / максимальным символам, не менее 1 буквенных и 1 цифровому символам:

^(?=.{6,32}$)(?=.*\d)(?=.*[a-zA-Z]).*$
1 голос
/ 01 апреля 2011

Здесь вы можете найти полезную таблицу с регулярными выражениями, в которой также приведены некоторые примеры. Один из них действительно соответствует вашим потребностям (6-й в поле «Образец шаблона»):

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