Minkle Garg
Minkle Garg

Reputation: 751

Email id validation

I have made an iphone application in which I have used email id validation. The code which I have used is as below:

NSString *valid = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", valid];

if ([emailTest evaluateWithObject:Id.text] == NO) 
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Validation" message:@"Email Id is not Valid" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
        [alert release];

    }
    if ([emailTest evaluateWithObject:Id.text] == YES) 
    {
    NSString *b = Id.text; 
    NSLog(@"value of the Id is : %@",b);

        if([b length] != 0)
        {
            MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
            picker.mailComposeDelegate = self;

            //[picker setSubject:@"Your iPhone fan"];//@"Hello iPhone!"
            [picker setToRecipients:[NSArray arrayWithObject:b]];

            NSString *emailBody =@""; //@"";//@"Nice  to See you!";
            [picker setMessageBody:emailBody isHTML:NO];

            [self presentModalViewController:picker animated:YES];
            [picker release];

        }
    }

But if I put [email protected] in textfield then it still shows valid id but in real it is invalid email id.

Upvotes: 0

Views: 621

Answers (4)

Nirav Patel
Nirav Patel

Reputation: 452

//For validating email id use following code ....

-(BOOL)validateEmail:(NSString*)email
{

    if( (0 != [email rangeOfString:@"@"].length) &&  (0 != [email rangeOfString:@"."].length) )
    {
        NSMutableCharacterSet *invalidCharSet = [[[[NSCharacterSet alphanumericCharacterSet] invertedSet]mutableCopy]autorelease];

        [invalidCharSet removeCharactersInString:@"_-"];

        NSRange range1 = [email rangeOfString:@"@" options:NSCaseInsensitiveSearch];

        // If username part contains any character other than "."  "_" "-"
        NSString *usernamePart = [email substringToIndex:range1.location];

        NSArray *stringsArray1 = [usernamePart componentsSeparatedByString:@"."];
        for (NSString *string in stringsArray1) {
            NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet: invalidCharSet];
            if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""])
                return NO;
        }
        NSString *domainPart = [email substringFromIndex:range1.location+1];
        NSArray *stringsArray2 = [domainPart componentsSeparatedByString:@"."];
        for (NSString *string in stringsArray2) {
            NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:invalidCharSet];
            if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""])
                return NO;
        }
        return YES;
    }
    else // no '@' or '.' present
        return NO;
}

//For validating URL use following code ....

- (BOOL) validateUrl: (NSString *) candidate 
{
    NSString *urlRegEx =  @"((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";

  NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 

    if ([urlTest evaluateWithObject:candidate]) 
        return YES;
    else
        return NO;
}

Upvotes: 0

Ashok Domadiya
Ashok Domadiya

Reputation: 1122

U JUST PASS THE STRING AND RETURN VALID EMAIL OR NOT

- (BOOL)validateEmailWithString:(NSString*)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,5}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:email];
}

Upvotes: 0

Chetan Bhalara
Chetan Bhalara

Reputation: 10344

Try this

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

Upvotes: 2

rptwsthi
rptwsthi

Reputation: 10172

-(IBAction)idValidator:(id)sender {
NSString *str=idField.text;

NSString *regex =@"\\b([a-zA-Z0-9%_.+\\-]+)\\b"; 

NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

BOOL x= [regextest evaluateWithObject:str];

if (x==FALSE) 
{
    //do something

}
else {
    //do something
}   
}   

Upvotes: 1

Related Questions