2011-03-25 31 views

Respuesta

134

Uso NSPredicate y expresiones regulares:

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

Para un montón de mensajes de correo electrónico separadas por una coma:

- (NSMutableArray*)validateEmailWithString:(NSString*)emails 
{ 
    NSMutableArray *validEmails = [[NSMutableArray alloc] init]; 
    NSArray *emailArray = [emails componentsSeparatedByString:@","]; 
    for (NSString *email in emailArray) 
    { 
     NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][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]; 
} 

respuesta Editado: (También valida puntos adicionales)

- (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\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}"; 
    NSString *laxString = @"[email protected]([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

@Prerak ver mi respuesta editada arriba. Esto devolverá una matriz con todos los correos electrónicos válidos. – Rog

+3

Traté de probar esta expresión regular con la dirección de correo electrónico 'email @ provider..com' (con dos puntos después de' proveedor') y se aprobó. ¿Es una dirección de correo electrónico inválida? –

+0

cómo restringir al usuario para que ingrese su ID de correo electrónico como solo @ gmail.com en el campo de texto. – venki

12

Utilice el siguiente código: -

NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
//Valid email address 

if ([emailTest evaluateWithObject:userMailTextField.text] == YES) 
{ 
    //Do Something 
} 
else 
{ 
    NSLog(@"email not in proper format"); 
} 

userMailTextField es el nombre de mi textField (usa el tuyo).

Espero que este código te ayude !!!

+0

Perfecto ... Funciona bien ... –

+0

¡Gracias por este ejemplo! ¡Es realmente asombroso! – Genevios

19

Pruebe esto
Esto comprueba exactamente con los nombres de dominio de nivel superior junto con la validación.


- (BOOL)validateEmail:(NSString *)inputText { 
    NSString *emailRegex = @"[A-Z0-9a-z][A-Z0-9a-z._%+-]*@[A-Za-z0-9][A-Za-z0-9.-]*\\.[A-Za-z]{2,6}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    NSRange aRange; 
    if([emailTest evaluateWithObject:inputText]) { 
     aRange = [inputText rangeOfString:@"." options:NSBackwardsSearch range:NSMakeRange(0, [inputText length])]; 
     int indexOfDot = aRange.location; 
     //NSLog(@"aRange.location:%d - %d",aRange.location, indexOfDot); 
     if(aRange.location != NSNotFound) { 
      NSString *topLevelDomain = [inputText substringFromIndex:indexOfDot]; 
      topLevelDomain = [topLevelDomain lowercaseString]; 
      //NSLog(@"topleveldomains:%@",topLevelDomain); 
      NSSet *TLD; 
      TLD = [NSSet setWithObjects:@".aero", @".asia", @".biz", @".cat", @".com", @".coop", @".edu", @".gov", @".info", @".int", @".jobs", @".mil", @".mobi", @".museum", @".name", @".net", @".org", @".pro", @".tel", @".travel", @".ac", @".ad", @".ae", @".af", @".ag", @".ai", @".al", @".am", @".an", @".ao", @".aq", @".ar", @".as", @".at", @".au", @".aw", @".ax", @".az", @".ba", @".bb", @".bd", @".be", @".bf", @".bg", @".bh", @".bi", @".bj", @".bm", @".bn", @".bo", @".br", @".bs", @".bt", @".bv", @".bw", @".by", @".bz", @".ca", @".cc", @".cd", @".cf", @".cg", @".ch", @".ci", @".ck", @".cl", @".cm", @".cn", @".co", @".cr", @".cu", @".cv", @".cx", @".cy", @".cz", @".de", @".dj", @".dk", @".dm", @".do", @".dz", @".ec", @".ee", @".eg", @".er", @".es", @".et", @".eu", @".fi", @".fj", @".fk", @".fm", @".fo", @".fr", @".ga", @".gb", @".gd", @".ge", @".gf", @".gg", @".gh", @".gi", @".gl", @".gm", @".gn", @".gp", @".gq", @".gr", @".gs", @".gt", @".gu", @".gw", @".gy", @".hk", @".hm", @".hn", @".hr", @".ht", @".hu", @".id", @".ie", @" No", @".il", @".im", @".in", @".io", @".iq", @".ir", @".is", @".it", @".je", @".jm", @".jo", @".jp", @".ke", @".kg", @".kh", @".ki", @".km", @".kn", @".kp", @".kr", @".kw", @".ky", @".kz", @".la", @".lb", @".lc", @".li", @".lk", @".lr", @".ls", @".lt", @".lu", @".lv", @".ly", @".ma", @".mc", @".md", @".me", @".mg", @".mh", @".mk", @".ml", @".mm", @".mn", @".mo", @".mp", @".mq", @".mr", @".ms", @".mt", @".mu", @".mv", @".mw", @".mx", @".my", @".mz", @".na", @".nc", @".ne", @".nf", @".ng", @".ni", @".nl", @".no", @".np", @".nr", @".nu", @".nz", @".om", @".pa", @".pe", @".pf", @".pg", @".ph", @".pk", @".pl", @".pm", @".pn", @".pr", @".ps", @".pt", @".pw", @".py", @".qa", @".re", @".ro", @".rs", @".ru", @".rw", @".sa", @".sb", @".sc", @".sd", @".se", @".sg", @".sh", @".si", @".sj", @".sk", @".sl", @".sm", @".sn", @".so", @".sr", @".st", @".su", @".sv", @".sy", @".sz", @".tc", @".td", @".tf", @".tg", @".th", @".tj", @".tk", @".tl", @".tm", @".tn", @".to", @".tp", @".tr", @".tt", @".tv", @".tw", @".tz", @".ua", @".ug", @".uk", @".us", @".uy", @".uz", @".va", @".vc", @".ve", @".vg", @".vi", @".vn", @".vu", @".wf", @".ws", @".ye", @".yt", @".za", @".zm", @".zw", nil]; 
      if(topLevelDomain != nil && ([TLD containsObject:topLevelDomain])) { 
       //NSLog(@"TLD contains topLevelDomain:%@",topLevelDomain); 
       return TRUE; 
      } 
      /*else { 
      NSLog(@"TLD DOEST NOT contains topLevelDomain:%@",topLevelDomain); 
      }*/ 

     } 
    } 
    return FALSE; 
} 

+0

Realmente apreciado, y upvoted :-) –

+0

SNR, fantástico !!! –

+1

No existe la cadena @ "No" en su conjunto de dominios de nivel superior. Creo que eso no debería estar allí. Además, a su lista le faltan algunos dominios oficiales de nivel superior, p. no latinos. Consulte https://www.iana.org/domains/root/db para obtener la lista oficial de IANA. – Florian

2

de --es fácil de validar su correo electrónico de identificación llamando validateEmail método:

-(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]; 
} 

Verifica que correo electrónico de identificación aquí ....

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]; 
} 
1
- (BOOL)validateEmailAddress:(NSString*)yourEmail 
{ 
    //create a regex string which includes all email validation 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 

    //create predicate with format matching your regex string 
    NSPredicate *email = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 

    //return True if your email address matches the predicate just formed 
    return [email evaluateWithObject:yourEmail];` 
} 
8

NSRegularExpression es la mejor manera de Validate Email Addresses con iOS 4.x y posterior.

-(BOOL) validateEmail:(NSString*) emailString 
{ 
    NSString *regExPattern = @"^[A-Z0-9._%+-][email protected][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; 
} 

Uso:

if([self validateEmail:@"[email protected]"]) { 
    //Email Address is valid. 
} 
else { 
    //Email Address is invalid. 
} 
+1

respuesta inteligente y útil + 1 –

0

Esto funciona exactamente

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

} 
+1

bloques de código necesitan 5 espacios principales, ctrl-K es su amigo :-) – kleopatra

9

Uso continuación código para "lenguaje Swift" Para Email Validación

func ValidateEmailString (strEmail:NSString) -> Bool 
{ 
    let emailRegex = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" 
    let emailText = NSPredicate(format:"SELF MATCHES [c]%@",emailRegex) 
    return (emailText!.evaluateWithObject(strEmail)) 
} 

Gracias :)

+0

Niza Solución Ilesh –

0

Validación perfecta para el correo electrónico. prueba esto.

- (BOOL)validateEmailWithString:(NSString*)checkString 
{ 

    NSString *laxString = @"[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", laxString]; 
    return [emailTest evaluateWithObject:checkString]; 
} 
0

Soy autor de DCKit biblioteca, que tiene DCMandatoryEmailTextField.Esta clase de validación de correo electrónico de forma automática y pone de relieve/unhighlights el campo de texto cuando el usuario está escribiendo un valor:

DCKit: email validation text field

Compruébelo usted mismo: https://github.com/andrew8712/DCKit

0

Swift

func validateEmail(email:String) -> Bool { 

    let stricterFilter = false 
    let stricterFilterString = "[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}" 
    let laxString = "[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"; 
    let emailRegex = stricterFilter ? stricterFilterString : laxString 
    let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegex) 

    return emailTest.evaluate(with: email); 
} 
1

Aquí la forma más sencilla de validar el correo electrónico en obj c

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

método de correo electrónico de identificación válida aquí es

- (BOOL) validEmail:(NSString*) emailString { 
if([emailString length]==0){ 
    return NO; 
} 
NSString *regExPattern = @"[A-Z0-9a-z._%+-][email protected][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; 
     } 
} 

En Swift 3.0 Versión

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

Función:

- (BOOL)validateEmail:(NSString *)enteredEmailID 
{ 
    //checking valid email id or not 
    NSString *emailReg = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailReg]; 
    return [emailTest evaluateWithObject:enteredEmailID]; 
} 

llamar así:

if ([self validateEmail: textField.text]) 
     { 
      //NSLog(@"Valid Email"); 
     } 
     else 
     { 
      //NSLog(@"Invalid Email"); 
     } 

EDIT: Usted puede hacer esto en el campo de texto puso fin a los delegados o campo de texto de edición debe cambiar el carácter delegados

Cuestiones relacionadas