如何检查电子邮件是否有效格式?

时间:2014-04-02 07:33:23

标签: ios email-validation

我使用以下代码检查在uitextfield中输入的电子邮件的验证。但是当我输入abcd@m.com.com时它返回true,它没有返回false。

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

任何人都可以建议我吗?

2 个答案:

答案 0 :(得分:1)

ios代码的电子邮件验证。

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

Textfield委托

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

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

}

答案 1 :(得分:1)

不要排除域m.com.com,因为它是com.com的可能子域(可能看起来很奇怪,但是有效的 - 而且是真实域名)。

如果您仍想要排除所有子域名(说:.后只允许一个@),则会排除以下电子邮件地址:

  • example@provider.co.uk
  • example@groups.google.com
  • example@press.apple.com
  • example@support.stackexchange.com
  • abcd@m.com.com

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