2014-10-17 4 views
-3

Может кто-нибудь Пожалуйста, помогите мне Мне нужно регулярное выражение Проверка пароля.Регулярное выражение для проверки пароля Цель-C

Состояние: Пароль должен быть не более 8 символов числовых или буквенных с меньшей мере одной специальных символов

Спасибо заранее.

+0

вы хотите разрешить '>'? Что вы пробовали? –

+0

Простая длина символа символа и использование NSScanner для поиска строк, какие типы символов существуют или нет. – Tirth

+0

Да. Любой специальный символ, который мы разрешаем. – iSuresh

ответ

5
^(?=.{2,8}$)(?=.*?[A-Za-z0-9])(?=.*?[\W_])[\w\W]+ 

Это регулярное выражение допускает пароли от 2 до 8 символов. Для этого требуется иметь как минимум 1 буквенно-цифровой символ (буквенный/числовой) и 1 не буквенно-цифровой символ. Вы можете проверить его here.

Если вы хотите изменить минимальные требуемые символы или максимальный максимум. Просто измените 2 или 8.

3

РЕШЕНИЕ:

-(BOOL)isValidPassword:(NSString *)checkString{ 
NSString *stricterFilterString = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[[email protected]$#!%*?&])[A-Za-z\\[email protected]$#!%*?&]{8,}"; 
NSPredicate *passwordTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stricterFilterString]; 
return [passwordTest evaluateWithObject:checkString]; 
} 

TEST:

NSLog(@"%@", [self isValidPassword:@"[email protected]$235#@df"] ? @"YES" : @"NO"); 

ВЫВОД:

YES 
0

Swift 3

CHEC k, если длина пароля больше или равна 8 и имеет нижний регистр, прописные, десятичныеДигиты и специальные символы, такие как! @ # $%^& *() _- + is необязательный.

Почему я не использую регулярное выражение?

Потому что поддерживать зарезервированные символы в регулярном синтаксисе выражения.


func isValidated(_ password: String) -> Bool { 
    var lowerCaseLetter: Bool = false 
    var upperCaseLetter: Bool = false 
    var digit: Bool = false 
    var specialCharacter: Bool = false 

    if password.characters.count >= 8 { 
     for char in password.unicodeScalars { 
      if !lowerCaseLetter { 
       lowerCaseLetter = CharacterSet.lowercaseLetters.contains(char) 
      } 
      if !upperCaseLetter { 
       upperCaseLetter = CharacterSet.uppercaseLetters.contains(char) 
      } 
      if !digit { 
       digit = CharacterSet.decimalDigits.contains(char) 
      } 
      if !specialCharacter { 
       specialCharacter = CharacterSet.punctuationCharacters.contains(char) 
      } 
     } 
     if specialCharacter || (digit && lowerCaseLetter && upperCaseLetter) { 
      //do what u want 
      return true 
     } 
     else { 
      return false 
     } 
    } 
    return false 
} 
let isVaildPass:Bool = isValidated("Test**00+-") 
print(isVaildPass) 
Смежные вопросы