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
Validation of email in swift iOS application
提问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 true
if 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)
}