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)
вы хотите разрешить '>'? Что вы пробовали? –
Простая длина символа символа и использование NSScanner для поиска строк, какие типы символов существуют или нет. – Tirth
Да. Любой специальный символ, который мы разрешаем. – iSuresh