Email validation on textField in iOS

前端 未结 14 559

In iOS App, how to add Email validation on UITextField?

相关标签:
14条回答
  • 2020-11-30 18:11

    This works exactly

    -(BOOL) emailValidation:(NSString *)emailTxt
    {
        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:emailTxt];
    
    }
    
    0 讨论(0)
  • 2020-11-30 18:12

    --it's easy to validate your email id by calling validateEmail method:

    -(BOOL)validateEmail:(NSString *)email      
    {
        NSString *emailRegex = @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";  
    
        NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    
        return [emailTest evaluateWithObject:email];
    }
    

    Verify your email id here....

    BOOL eb=[self validateEmail:**youremailtextfield**];
    
    if(!eb)
    {
        UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Please enter correct email id"
                                                              delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    
        [alertsuccess show];
        [alertsuccess release]; 
    }
    
    0 讨论(0)
  • 2020-11-30 18:14

    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];
    }
    
    0 讨论(0)
  • 2020-11-30 18:19

    A version using NSRegularExpression and regex pattern copied from OWASP_Validation_Regex_Repository

    + (BOOL) isValidEmail:(NSString *)emailString {
            NSError *error = NULL;
            /**
             * @see <a href="https://www.owasp.org/index.php/OWASP_Validation_Regex_Repository">OWASP_Validation_Regex_Repository</a>
             */
            NSString *emailPattern = @"^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
            NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:emailPattern
                                                                                   options:NSRegularExpressionCaseInsensitive
                                                                                     error:&error];
            NSUInteger matchCount = [regex numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
            return matchCount > 0;
        }
    
    0 讨论(0)
  • 2020-11-30 18:20

    NSRegularExpression is the Best Way to Validate Email Addresses with iOS 4.x and Later.

    -(BOOL) validateEmail:(NSString*) emailString 
    {
         NSString *regExPattern = @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$";
         NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
         NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
         NSLog(@"%i", regExMatches);
         if (regExMatches == 0) {
             return NO;
         } 
         else
             return YES;
    }
    

    Usage :

    if([self validateEmail:@"something@domain.com"]) {
      //Email Address is valid.
    } 
    else {
      //Email Address is invalid.
    }
    
    0 讨论(0)
  • 2020-11-30 18:21

    Here the simple way to validate email in obj c

    if(![self validEmail:self.emailTxtFld.text]) {
        // here show alert not a valid email id
    }
    

    here valid email id method is

    - (BOOL) validEmail:(NSString*) emailString {
    if([emailString length]==0){
        return NO;
    }
    NSString *regExPattern = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
         if (regExMatches == 0) {
             return NO;
         } else {
                 return YES;
           }
    }
    

    In Swift 3.0 Version

    if !validEmailId(inputText: userNameTxtFld.text!)  {
            print("Not Valid Emaild")
        }
    else {
        print("valid email id")
    }    
    
    func validEmailId(inputText: String)-> Bool {
        print("validate emilId: \(inputText)")
        let emailRegEx = "^(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?: )*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?: )*)|(?: )+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?: )*[!-Z^-~])*(?: )*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?$"
        let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
        let result = emailTest.evaluate(with: inputText)
        return result
    }
    
    0 讨论(0)
提交回复
热议问题