Email validation on textField in iOS
Use NSPredicate and Regex:
- (BOOL)validateEmailWithString:(NSString*)email
{
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
For a bunch of emails separated by a comma:
- (NSMutableArray*)validateEmailWithString:(NSString*)emails
{
NSMutableArray *validEmails = [[NSMutableArray alloc] init];
NSArray *emailArray = [emails componentsSeparatedByString:@","];
for (NSString *email in emailArray)
{
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
if ([emailTest evaluateWithObject:email])
[validEmails addObject:email];
}
return [validEmails autorelease];
}
Edited Answer: (It also validates extra dots )
- (BOOL)validateEmailWithString:(NSString*)checkString
{
BOOL stricterFilter = NO; // Discussion http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:checkString];
}
Validating the email address in UITextField
you can do it by using the extension of String
extension String {
var isEmail: 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.evaluate(with: self)
}
}
now you can use it as
if emailtext.isEmail {
print("email is valid")
} else {
print("email is not valid")
}
How to validate an e-mail address in swift?
I would use NSPredicate
:
func isValidEmail(_ email: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPred.evaluate(with: email)
}
for versions of Swift earlier than 3.0:
func isValidEmail(email: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPred.evaluate(with: email)
}
for versions of Swift earlier than 1.2:
func isValidEmail(email: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
if let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx) {
return emailPred.evaluateWithObject(email)
}
return false
}
how to check the entered email is in email format
Hope it helps:
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
}
In your code:
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")
}
email validation / SwiftUi
Here is demo for how to add validation.
import Combine
import SwiftUI
struct LoginViewV: View {
@State private var email = ""
@State private var password = ""
var body: some View {
VStack {
TextField("Email", text: $email)
TextField("Password", text: $password)
.onReceive(Just(password), perform: { _ in
// This is for max char. If you want to set limit for character, set here
if password.count >= 12 {
password = String(password.prefix(12))
}
})
Button(action: {
// Show error message here
if let errorMessage = self.validView() {
print(errorMessage)
return
}
// Call login API here
/**
login API
*/
}, label: {
Text("Login")
})
Spacer()
}
}
private func validView() -> String? {
if email.isEmpty {
return "Email is empty"
}
if !self.isValidEmail(email) {
return "Email is invalid"
}
if password.isEmpty {
return "Password is empty"
}
if self.password.count < 8 {
return "Password should be 8 character long"
}
// Do same like other validation as per needed
return nil
}
private func isValidEmail(_ email: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPred.evaluate(with: email)
}
}
Allow only email for UITextField input Swift iOS8
You can use this code to validate email address:
@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
}
Related Topics
iOS Swift Multiple Dimension Arrays - Compiliing Takes Ages. What Should I Change
If No Table View Results, Display "No Results" on Screen
Swift Stack and Heap Understanding
iOS 6 - Viewdidunload Migrate to Didreceivememorywarning
Difference Between Presentviewcontroller and Uinavigationcontroller
iOS 7 - How to Disable the Swipe Back and Forward Functionality in Safari
"Cannot Connect to Itunes Store" In-App Purchases
How to Fix Failed to Fetch Default Token Error
Why Can't I Invert My Image Back to Original with Cifilter in My Swift iOS App
Ask for User Permission to Receive Uilocalnotifications in iOS 8
Fetching All Contacts in iOS Swift
iOS Video Compression Swift iOS 8 Corrupt Video File
Xcode 4: Build Failed, No Issues
How to Build a Url with Query Parameters Containing Multiple Values for the Same Key in Swift