iOS中的电子邮件验证

use*_*089 4 email validation nspredicate ios nsregularexpression

可以使用RegexKitLite库(iOS2.0),NSPredicate(iOS 3.0及以上版本)和NSRegularExpression(iOS 4.0)完成iPhone编程中的电子邮件验证检查.但是,任何人都可以说明一个优于另一个的优势,这是三个所述的最佳验证选项.

Pra*_*een 11

我总是使用NSPredicate ......它工作正常

NSString *emailid = emailField.text;
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest =[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL myStringMatchesRegEx=[emailTest evaluateWithObject:emailid];
Run Code Online (Sandbox Code Playgroud)

  • -1这是太宽容了,因为它会匹配"`......... @ ........ dave`" (4认同)

Kha*_*tee 8

我的答案是从这个链接提供的优秀解决方案中重构的一个..

///Returns YES (true) if EMail is valid
+(BOOL) IsValidEmail:(NSString *)emailString Strict:(BOOL)strictFilter
{
    NSString *stricterFilterString = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSString *laxString = @".+@.+\\.[A-Za-z]{2}[A-Za-z]*";

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

    return [emailTest evaluateWithObject:emailString];
}
Run Code Online (Sandbox Code Playgroud)