在swift iOS应用程序中验证电子邮件

Nav*_*mar 9 xcode ios swift

class func isValidEmail(testStr:String) -> Bool {
        let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
        let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)
        let result = range != nil ? true : false
        return result
    }
Run Code Online (Sandbox Code Playgroud)

我使用此功能来验证我的登录表单中的电子邮件,而不是如何从我的文本字段中提升此事件

像这样使用

if(username.isEqualToString("") || [!LoginController, testStr == self.username])
        {
            self.dismissViewControllerAnimated(true, completion: nil)
            var alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign in Failed!"
            alertView.message = "Please enter valid username"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
            return
        }
Run Code Online (Sandbox Code Playgroud)

但是在teststr得到未解决的错误我是swift的新手,任何机构都可以解释我如何解决这个问题

Vir*_*vaj 10

您可以通过简单的regEX函数验证电子邮件,true如果有效则返回false

您可以在用户点击键盘事件上的完成/输入时验证它,例如'editingDidEnd',将它从故事板绑定到类文件,如,

@IBAction func validateEmail(sender: UITextField){
    if txtEmaildAddress.text.isEmpty {
        println("enter email address") //prompt ALert or toast
    }
    else if self.validate(txtEmaildAddress.text) {
        println("Invalid email address") // prompt alert for invalid email
    }
}

func validate(YourEMailAddress: String) -> Bool {
    let REGEX: String
    REGEX = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
    return NSPredicate(format: "SELF MATCHES %@", REGEX).evaluateWithObject(YourEMailAddress)
}
Run Code Online (Sandbox Code Playgroud)

可以帮助这种方法轻松验证.

HTH,享受编码!!

  • 为什么`REGEX`?为什么打破每个可能的变量命名约定?`YourEmailAddress`?`txtEmaildAddress`?为什么不坚持一个单一的约定? (4认同)

Pra*_*wad 5

Swift 4.2和Xcode 10

对我来说,如果域名后面有两个以上的点,其他答案将返回true。我找到了正确解决该问题的答案。

func isValidEmail(testStr:String) -> Bool {
        let emailRegEx = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{1,4}$"
        let emailTest = NSPredicate(format:"SELF MATCHES[c] %@", emailRegEx)
        return emailTest.evaluate(with: testStr)
   }
Run Code Online (Sandbox Code Playgroud)

快乐编码