Esta función es simple y, sin embargo, verifica la dirección de correo electrónico más a fondo. Por ejemplo, de acuerdo con RFC2822, una dirección de correo electrónico no debe contener dos puntos seguidos, como el nombre de pila ... el nombre de pila @ dominio..com
También es importante usar anclas en expresiones regulares como se ve en esta función. Sin anclajes, la siguiente dirección de correo electrónico se considera válida: primer nombre; apellido@dominio.com (bla porque la sección apellido@dominio.com es válida, ignorando el primer nombre) al principio y (bla al final). motor de expresiones regulares para validar todo el correo electrónico.
Esta función utiliza NSPredicate, que no existe en iOS 2. Desafortunadamente, puede que no ayude al autor de la pregunta, pero con suerte ayudará a otros con versiones más recientes de iOS. Sin embargo, las expresiones regulares en esta función aún se pueden aplicar a RegExKitLite en iOS 2. Y para aquellos que usan iOS 4 o posterior, estas expresiones regulares se pueden implementar con NSRegularExpression.
- (BOOL)isValidEmail:(NSString *)email
{
NSString *regex1 = @"\\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,4}\\z";
NSString *regex2 = @"^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*";
NSPredicate *test1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex1];
NSPredicate *test2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex2];
return [test1 evaluateWithObject:email] && [test2 evaluateWithObject:email];
}
Vea validar la dirección de correo electrónico utilizando expresiones regulares en Objective-C .