Possible Duplicate:
Best practices for validating email address in Objective-C on iOS 2.0?
我正在开发一个iPhone应用程序,我需要用户在登录时给出他的邮箱地址.
判断邮箱地址是否有效的最佳方法是什么?
Possible Duplicate:
Best practices for validating email address in Objective-C on iOS 2.0?
我正在开发一个iPhone应用程序,我需要用户在登录时给出他的邮箱地址.
判断邮箱地址是否有效的最佳方法是什么?
良好的可可功能:
-(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\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
NSString *laxString = @"^.+@([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];
}
关于宽松与严格的讨论-http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
由于类别更好,您还可以添加一个界面:
@interface NSString (emailValidation)
- (BOOL)isValidEmail;
@end
使生效
@implementation NSString (emailValidation)
-(BOOL)isValidEmail
{
BOOL stricterFilter = NO; // Discussion http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
NSString *laxString = @"^.+@([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:self];
}
@end
然后利用:
if([@"emailString@email.com" isValidEmail]) { /* True */ }
if([@"InvalidEmail@notreallyemailbecausenosuffix" isValidEmail]) { /* False */ }