Проверка верхнего и нижнего регистра TextField - PullRequest
1 голос
/ 28 мая 2019

Я работаю над проверкой текстовых полей и путаюсь, как проверять текстовое поле, должно содержать как минимум 1 символ из всех следующих категорий: Английские заглавные буквы (A - Z). Английские строчные буквы (a - z).

Ответы [ 4 ]

1 голос
/ 28 мая 2019

Кредит: Проверка в верхнем и нижнем регистре TextField

Вот переформулировка условия: - Минимум 8 символов, 1 заглавная и 1 цифра.

^ (? =. [AZ]) (? =. [AZ]) (? =. \ d) (? =. [$ @ $!% ?&]) [A-Za-z \ d $ @ $!% ? &] {8,}

extension String {
func isValidPassword() -> Bool {
    let regularExpression = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}"
    let passwordValidation = NSPredicate.init(format: "SELF MATCHES %@", regularExpression)

    return passwordValidation.evaluate(with: self)
    }
}

//Example 1

var password = "@Abcdef011" //string from UITextField (Password)
password.isValidPassword() // -> true

//Example 2

var password = "wer011" //string from UITextField 
password.isValidPassword() // -> false
0 голосов
/ 28 мая 2019

Простое расширение принимает любой CharacterSet для проверки:

extension String {
    func hasCharacter(in characterSet: CharacterSet) -> Bool {
        return rangeOfCharacter(from: characterSet) != nil
    }
}

использование:

"aBc".hasCharacter(in: .lowercaseLetters)
"aBc".hasCharacter(in: .uppercaseLetters)
0 голосов
/ 28 мая 2019

Надеюсь, это поможет вам.

func isValidPassword(testStr:String?) -> Bool {
    guard testStr != nil else { return false }

    // at least one uppercase, 
    // at least one lowercase
    // 8 characters total
    let passwordTest = NSPredicate(format: "SELF MATCHES %@", "(?=.*[A-Z])(?=.*[a-z]).{8,}")
    return passwordTest.evaluate(with: testStr)
}
0 голосов
/ 28 мая 2019

Посмотрите на CharacterSet s (описано здесь )

. Вы можете создавать различные наборы символов (например, строчные буквы) и проверять, имеет ли строка содержимое, соответствующее указанному символу.set.

Итак, вы можете создать функцию, которая возвращает логическое значение.Функция проверяет вашу строку по двум CharacterSet с, и только если оба могут быть найдены в строке, функция возвращает true.

Примерно так:

func validate(string: String) -> Bool {
    let lowercase = CharacterSet.lowercaseLetters
    let uppercase = CharacterSet.uppercaseLetters

    let lowercaseRange = string.rangeOfCharacter(from: lowercase)
    let uppercaseRange = string.rangeOfCharacter(from: uppercase)

    return lowercaseRange != nil && uppercaseRange != nil
}

validate(string: "Hello") //returns true
validate(string: "hello") //returns false
validate(string: "HELLO") //returns false

Естьпосмотрите на эту статью от NSHipster, чтобы узнать больше.

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