如何检查输入的电子邮件是不是为电子邮件格式[重复]
Posted
技术标签:
【中文标题】如何检查输入的电子邮件是不是为电子邮件格式[重复]【英文标题】:how to check the entered email is in email format [duplicate]如何检查输入的电子邮件是否为电子邮件格式[重复] 【发布时间】:2016-07-23 21:14:58 【问题描述】:如何检查输入的电子邮件是否正确。喜欢 somename@gmail.com 或任何。
这是我的代码。我试过了,但我的 if 语句出错了
import UIKit
extension String
func matchPattern(patStr:String)->Bool
var isMatch:Bool = false
do
let regex = try NSRegularExpression(pattern: patStr, options: [.CaseInsensitive])
let result = regex.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, characters.count))
if (result != nil)
isMatch = true
catch
isMatch = false
return isMatch
class RegisterVC: UIViewController
@IBOutlet weak var EmailField: UITextField!
@IBOutlet weak var LocationField: UITextField!
@IBOutlet weak var userNameField: UITextField!
@IBOutlet weak var passWordField: UITextField!
@IBOutlet weak var confirmPasswordField: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
@IBAction func SignUpBtnPress(sender: AnyObject)
let Email:NSString = EmailField.text!
let Location:NSString = LocationField.text!
let username:NSString = userNameField.text!
let password:NSString = passWordField.text!
let confirm_password:NSString = confirmPasswordField.text!
if (Email.matchPattern("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]2,4$")==true)
print("this is e-mail!")
else if ( Email.isEqualToString("") || Location.isEqualToString("") || username.isEqualToString("") || password.isEqualToString("") || confirm_password.isEqualToString("") )
let alertController = UIAlertController(title: "Alert", message: "All Field Are Mnditory.", preferredStyle: UIAlertControllerStyle.Alert)
let DestructiveAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default) (result : UIAlertAction) -> Void in
print("Settings")
alertController.addAction(DestructiveAction)
self.presentViewController(alertController, animated: true, completion: nil)
else if ( !password.isEqual(confirm_password) )
let alertController = UIAlertController(title: "Alert", message: "Password Din't Match.", preferredStyle: UIAlertControllerStyle.Alert)
let DestructiveAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default) (result : UIAlertAction) -> Void in
print("Password Din't Match")
alertController.addAction(DestructiveAction)
self.presentViewController(alertController, animated: true, completion: nil)
print("login sucess")
我需要的是,如果任何用户开始绑定电子邮件 ID 格式错误,我需要显示警报。
谢谢
【问题讨论】:
" 我的 if 语句出错了" 是一个无用的问题描述。哪个 if 语句和什么错误? ***.com/questions/27998409/… 除了实际联系主机并查看它是否会接受电子邮件之外,确实没有验证电子邮件地址的好方法。见这篇文章:I Knew How To Validate An Email Address Until I Read The RFC 【参考方案1】:希望对你有帮助:
func isValidEmail(testStr:String) -> Bool
print("validate emilId: \(testStr)")
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluateWithObject(testStr)
return result
在您的代码中:
import UIKit
extension String
func matchPattern(patStr:String)->Bool
var isMatch:Bool = false
do
let regex = try NSRegularExpression(pattern: patStr, options: [.CaseInsensitive])
let result = regex.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, characters.count))
if (result != nil)
isMatch = true
catch
isMatch = false
return isMatch
class RegisterVC: UIViewController
@IBOutlet weak var EmailField: UITextField!
@IBOutlet weak var LocationField: UITextField!
@IBOutlet weak var userNameField: UITextField!
@IBOutlet weak var passWordField: UITextField!
@IBOutlet weak var confirmPasswordField: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
func isValidEmail(testStr:String) -> Bool
print("validate emilId: \(testStr)")
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluateWithObject(testStr)
return result
@IBAction func SignUpBtnPress(sender: AnyObject)
let Email:NSString = EmailField.text!
let Location:NSString = LocationField.text!
let username:NSString = userNameField.text!
let password:NSString = passWordField.text!
let confirm_password:NSString = confirmPasswordField.text!
if isValidEmail(Email) == true
print("this is e-mail!")
else if ( Email.isEqualToString("") || Location.isEqualToString("") || username.isEqualToString("") || password.isEqualToString("") || confirm_password.isEqualToString("") )
let alertController = UIAlertController(title: "Alert", message: "All Field Are Mnditory.", preferredStyle: UIAlertControllerStyle.Alert)
let DestructiveAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default) (result : UIAlertAction) -> Void in
print("Settings")
alertController.addAction(DestructiveAction)
self.presentViewController(alertController, animated: true, completion: nil)
else if ( !password.isEqual(confirm_password) )
let alertController = UIAlertController(title: "Alert", message: "Password Din't Match.", preferredStyle: UIAlertControllerStyle.Alert)
let DestructiveAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default) (result : UIAlertAction) -> Void in
print("Password Din't Match")
alertController.addAction(DestructiveAction)
self.presentViewController(alertController, animated: true, completion: nil)
print("login sucess")
【讨论】:
我只是复制你的 func 方法,但是当我输入一个未格式化的电子邮件时它没有显示?? 没问题,但我怎么能在我的 signupbutton pressd 方法中调用这个方法 您需要稍微扩展正则表达式emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,15"
- 现在很多域结尾都以超过 4 个字符结尾。【参考方案2】:
你可以试试这个
-(BOOL)isValidEmailAddress:(NSString *)email
BOOL stricterFilter = YES;
NSString *stricterFilterString = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4";
NSString *laxString = @".+@.+\\.[A-Za-z]2[A-Za-z]*";
NSString *emailRegex = stricterFilter ? stricterFilterString:laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
斯威夫特版本
func isValidEmail(testStr:String) -> Bool
println("validate emilId: \(testStr)")
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,"
var emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
var result = emailTest?.evaluateWithObject(testStr)
return result!
使用电子邮件验证:
if isValidEmail(textField.text)
println("Validate EmailID")
else
println("invalide EmailID")
更多来自Email & Phone Validation in Swift
【讨论】:
我是 ios 新手,从 swift 开始。如果可能的话 swift.It will be help full 关于 Swift 的问题 如何使用上述解决方案代码显示警报?? 那是什么rdfsdsfsdfsd
??
@user5513630 是字符串!!!【参考方案3】:
这应该可以正常工作
func isValidEmail(testStr:String) -> Bool
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluateWithObject(testStr)
return result
用法:
if isValidEmail("xxxx@gmail.com")
//email is valid
【讨论】:
错误。以下电子邮件是有效的,此测试表明它是无效的j@proseware.com9
、js#internal@proseware.com
、j_9@[129.126.118.1]
、`js@proseware.com9` 和以下相反:j.@server1.proseware.com
、j..s@proseware.com
、js@proseware..com
, js@proseware..com
以上是关于如何检查输入的电子邮件是不是为电子邮件格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章