У меня есть UITextField
и подключенный textFieldDidChange
метод, в котором я хотел бы проверить, является ли text
«правильным». У меня есть три разных условия, которые я хотел бы проверить.
textFieldDidChange-Method:
@objc func textFieldDidChange(_ textField: UITextField) {
switch textField {
case passwordTextField:
// check for upper and lowercase letter
if (textField.text!.matches("^(?=.*[A-Z]).(?=.*[a-z])$")){
checkLetterImage.image = UIImage(named: "correct")
}else {
checkLetterImage.image = UIImage(named: "false")
}
// check for length -> min 8
if(textField.text!.matches("^{8,}$")){
checkLengthImage.image = UIImage(named: "correct")
}else {
checkLengthImage.image = UIImage(named: "false")
}
// check for at least one number
if(textField.text!.matches("^(?=.*[0-9])")){
checkNumberImage.image = UIImage(named: "correct")
}else {
checkNumberImage.image = UIImage(named: "false")
}
break
default:
break
}
}
matches-Method
:
public extension String {
func matches(_ regex: String) -> Bool {
return self.range(of: regex, options: .regularExpression, range: nil, locale: nil) != nil
}
}
Понятия не имею, почему код выше не работает. Я что-то не так делаю с Regex? Это никогда не происходит ни в одном из if-cases
...
Обновление:
«Проверка номера» работает отлично , Проверка верхнего и нижнего регистров не работает вообще, а проверка длины работает не так, как должна: она отображает «правильный» образ после того, как вы что-то наберете и снова все удалите.
Кто-нибудь знает, почему это происходит ????