Как указать тип текста в UITextField

Я пытаюсь определить, вводит ли пользователь правильный адрес электронной почты в UITextField . Я использую этот код, но получаю следующее сообщение об ошибке.

 func isValidEmail(testStr:String) -> Bool {
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch) // I'm getting the error message here.
    let result = range != nil ? true : false
    return result
}
@IBAction func logIn(sender: AnyObject) {
    let validLogin = isValidEmail(testStr: field.text!)
    if validLogin {
        print("User entered valid input")
    } else {
        print("Invalid email address")
    }
}

Это сообщение об ошибке, которое я получаю: "Значение типа String не имеет члена rangeOfString"

Я думаю, это потому, что у меня не установлен RegExKitLite, но я не уверен на 100%. Несмотря на это, я попытался установить комплект, но я не мог понять, как. Я скачал файл, но не могу понять, как добавить его в Xcode.

1 ответ

Если вы используете Swift 3 или новее, строки:

let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)
let result = range != nil ? true : false
return result

должно быть:

let range = testStr.range(of: emailRegEx, options: [ .regularExpression ])
return range != nil

Ничего из этого не требует сторонней библиотеки.

Вы, вероятно, также хотите убедиться, что вся строка соответствует, поэтому вы должны добавить ^ в начале регулярного выражения и добавить $ к концу.

Другие вопросы по тегам