2017-01-09 4 views
1

Je souhaite valider l'e-mail dans iOS. J'ai écrit une classe de catégorie et voici mon code mais dans certains cas comme [email protected] cela ne fonctionne pas ...La validation du courrier électronique ne fonctionne pas dans certains cas de test dans iOS

Si l'utilisateur tape deux fois .com ou .in en continu il n'est pas le détecter ...

J'ai essayé avec quelques solutions mais cela ne fonctionnait pas non plus. Voilà pourquoi je demande ici

- (BOOL)isValidEmail { 
    NSString *emailString = [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    BOOL isValid = YES; 
    BOOL sticterFilter = YES; 

    NSString *stricterFilterString = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSString *laxString = @"[email protected]+\\.[A-Za-z]{2}[A-Za-z]*"; 

    NSString *emailRegex = sticterFilter ? stricterFilterString : laxString; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 

    if (![emailTest evaluateWithObject:emailString]) { 
     isValid = NO; 
    } 

    return isValid; 

}

+1

deux fois '.' est valable, je pense, est un peu email' a @ b .co.uk' est valide – Tj3n

+0

ya mais @ Tj3n suppose maintenant l'email id comme [email protected] comment vérifier celui-ci? –

+0

Est-ce ... mais comment identifier ce .com ou .in deux fois s'il est venu continuellement ... et montrer l'erreur. Y at-il un moyen de trouver ces cas ... –

Répondre

0

Check it.

-(BOOL) isValidEmail:(NSString *)email 
    { 
     BOOL filter = NO; 
     NSString *stricterString = @"^[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 = filter ? stricterString : laxString; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
     return [emailTest evaluateWithObject:email]; 
    } 
0

cette expression régulière fonctionne correctement:

- (void) checkMail{ 
    NSString *emailRegex = @"^[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,}$"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    if (self.mail.text.length <= 0) { 
    //error empty 
}else if(![emailTest evaluateWithObject:self.mail.text]){ 
    //error address inserted... 
}else{ 
    //correct email! 
}; 

}

0

S'il vous plaît vérifier réponse ci-dessous. Cela peut vous aider.

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

     NSArray *firstArray = [checkString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"@"]]; 
     NSString *input = [firstArray objectAtIndex:1]; 

     NSSet *aSet = [NSSet setWithArray:[input componentsSeparatedByString:@"."]]; 
     NSString *result = [aSet.allObjects componentsJoinedByString:@"."]; 

     if ([input isEqualToString:result]) { 
      BOOL checkValue = [emailTest evaluateWithObject:checkString]; 
      return checkValue; 
     }else{ 

      return FALSE; 
     } 


    } 
0

Après fonction a fonctionné pour moi comme un charme:

func validateEmailWithString(email: String) -> Bool { 
    let emailRegex: String = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" 
    let emailTest: NSPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex) 
    return emailTest.evaluateWithObject(email) 
} 
0

FAITES L'ESSAI

if (![self validateEmailWithString:txtEmail.text]) 

{ 
//@"Please Enter a Valid Email Address"]; 
} 




- (BOOL)validateEmailWithString:(NSString*)checkString 
{ 
BOOL stricterFilter = NO; 
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]; 
}