0

Validating Email address with regex not accepting two character extensions like .in .co etc

BOOL stricterFilter = NO;
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];
Code cracker
  • 3,105
  • 6
  • 37
  • 67

4 Answers4

2

Use this

#pragma mark - Valid Email
+ (BOOL)isValidEmail:(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];
}
Awesome.Apple
  • 1,316
  • 1
  • 11
  • 24
1

You just need to check in laxString look like following:

 NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";

Then Check that must be working

Following is my working code:

- (BOOL)validateEmailWithString:(NSString*)checkString
{
    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];
}
Nitin Gohel
  • 49,482
  • 17
  • 105
  • 144
0

Validate email usind below function

 - (BOOL)validateEmail:(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];
    }

after validating email check .in at the end of email or not with below piece in code

NSString *lastThreeChar = [yourNewString substringFromIndex:[txt_Email.text length] - 3];
    if ([lastThreeChar isEqualToString:@".in"])
     {
      // email_id contain .in
     }
    else{
        // email_id dosen't contain .in
      }
Milap Kundalia
  • 1,566
  • 1
  • 16
  • 24
0
-(BOOL)validateEmail {
    //Email address field should give an error when the email address begins with ".","-","_" .
    // Works well with @me.com.

    NSString *emailRegex = @"[A-Z0-9a-z]([A-Z0-9a-z._-]{0,64})+[A-Z0-9a-z]+@[A-Z0-9a-z]+([A-Za-z0-9.-]{0,64})+([A-Z0-9a-z])+\\.[A-Za-z]{2,4}";
    NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];   
    return ([emailPredicate evaluateWithObject:self.text] && self.text.length <= 64 && ([self.text rangeOfString:@".."].location == NSNotFound));
}
Mehul Chuahan
  • 752
  • 8
  • 19