Email Validation on Textfield in iOS

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



Leave a reply



Submit