仅允许UITextField输入Swift iOS8的电子邮件

时间:2015-08-06 06:50:17

标签: ios swift uitextfield

我尝试让用户使用他们的电子邮件地址作为用户名注册会员。 在用户名的文本字段中,我已将键盘类型更改为“电子邮件地址”。但是,如何限制用户在文本字段中输入电子邮件地址。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

您可以使用此代码验证电子邮件地址:

@IBOutlet weak var emailText: UITextField!
@IBAction func logIn(sender: AnyObject) {

    let validLogin = isValidEmail(emailText.text)
    if validLogin {
        println("User entered valid input")
    } else {
        println("Invalid email address")
    }
}

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)
    let result = range != nil ? true : false
    return result
}

答案 1 :(得分:1)

虽然它是重复的,但我建议您使用SSValidationTextField 它是我在某个时候写过的API。 示例代码类似于

var phoneValidationTextField = SSValidationTextField(frame: CGRectMake(200, 200, 150, 50))
phoneValidationTextField.validityFunction = self.isValidPhone
phoneValidationTextField.delaytime = 0.5
phoneValidationTextField.errorText = "Incorrect Format"
phoneValidationTextField.successText = "Valid Format"
phoneValidationTextField.borderStyle = UITextBorderStyle.RoundedRect
self.addSubview(phoneValidationTextField)

典型的有效性函数类似于

func isValidEmail(stringValue: String) ->Bool {
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
    return emailTest.evaluateWithObject(stringValue)
}

它完成了其余的验证。