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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29666956/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 07:00:37  来源:igfitidea点击:

Validation of email in swift iOS application

iosxcodeswift

提问by Naveen Kumar

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
}

I use this function to validate email in my login form. I can't understand how to rise this event from my textfield.

我使用此功能验证登录表单中的电子邮件。我无法理解如何从我的文本字段中引发此事件。

Using like this

像这样使用

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
}

But getting unresolved error at teststr. I am new to Swift. Can any body explain me how to solve this?

但是在teststr. 我是斯威夫特的新手。任何机构都可以向我解释如何解决这个问题吗?

采纳答案by Viral Savaj

You can validate email using a simple regex function which returns trueif it's valid otherwise false

您可以使用一个简单的正则表达式函数来验证电子邮件,true否则如果有效则返回false

You can validate it when user hits Done/Enteron keyboard event, such as editingDidEnd. You can bind it from storyboard to class file like,

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

@IBAction func onPressDone(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)
}

May help this method to validate easily.

可帮助此方法轻松验证。

HTH, Enjoy Coding !!

HTH,享受编码!

回答by Prashant Gaikwad

Swift 4.2 and Xcode 10

Swift 4.2 和 Xcode 10

For me, other answers were returning true if there are more then two dots after the domain name. I found this answer where it handles that condition properly.

对我来说,如果域名后面有两个以上的点,其他答案就会返回 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)
}

Happy Coding

快乐编码

回答by Phillip Jacobs

func isValidEmail(_ email: String) -> Bool {
    let emailRegEx = "(?:[a-zA-Z0-9!#$%\&‘*+/=?\^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%\&'*+/=?\^_`{|}" +
                     "~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\" +
                     "x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-" +
                     "z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5" +
                     "]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-" +
                     "9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21" +
                     "-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])"     
    let emailTest = NSPredicate(format:"SELF MATCHES[c] %@", emailRegEx)
    return emailTest.evaluate(with: email)
}

USAGE:

用法:

isValidEmail("[email protected]")
output -> true

isValidEmail("[email protected]")
output -> true

isValidEmail("name@mail")
output -> false

isValidEmail("name@mail")
output -> false

回答by Akbar Khan

Swift

迅速

extension String {
    let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,64}"
    let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailFormat)
    return emailPredicate.evaluate(with: self)
}