2014-04-02 141 views
0

我正在使用以下代码来检查我在uitextfield中输入的电子邮件的验证。但是,当我输入[email protected]时,它不会返回false。如何检查电子邮件是否为有效格式?

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

任何人都可以建议我吗?

+1

关于使用正则表达式验证电子邮件地址有很多讨论,例如:http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address。 - 另外'abcd @ m.com.com'对我来说看起来是“格式良好”的(但我可能是错的!),并匹配正则表达式。你为什么期望得到错误? –

+0

'abcd @ m.com.com'可以是一个有效的电子邮件地址! – lootsch

+0

但我不需要[email protected]。我需要像[email protected] – Sharme

回答

1

不排除域m.com.com,因为它的com.com可能的子域(至极也许看起来很奇怪,但它是一个有效的 - 和BTW实时 - 域)。

如果你仍然要排除所有子域(话说:只允许@后一个.),你会排除如电子邮件地址:

所以,你可能不想排除它们。

+0

是的好谢谢。 – Sharme

1

电子邮件验证的ios代码。

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

文本字段代表

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 

    if ([self validateEmailWithString:textField.text]) 
    { 
     Nslog(@"Valid"); 
    } 
    else 
    { 
     Nslog(@"Not Valid"); 
    } 

} 
+0

我使用相同的代码。我不想在电子邮件地址中输入另一个.com,并且应该返回false。我需要[email protected]m.com – Sharme

+0

为什么你想排除.com.com? – lootsch

+0

域名使用:http://www.com.com(kind of) – lootsch

相关问题