objective-c - 检查电子邮件地址在 iOS 上是否有效

这个问题在这里已经有了答案:
关闭9年前

Possible Duplicate:
Best practices for validating email address in Objective-C on iOS 2.0?

我正在开发一个 iPhone 应用程序,我需要用户在登录时提供他的电子邮件地址。

检查电子邮件地址是否为有效电子邮件地址的最佳方法是什么?

最佳答案

良好的 cocoa 功能:

-(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 */ }

https://stackoverflow.com/questions/3139619/

相关文章:

ios - 内部测试时 ITSAppUsesNonExemptEncryption 导出合规性?

objective-c - 如何在 Objective-C 中声明类级别的属性?

objective-c - 为什么 Objective-C 文件使用 .m 扩展名?

objective-c - 在 Objective-C 中 @synchronized 如何锁定/解

ios - 在代码中为 UIButton 设置图像

objective-c - 迭代时从 NSMutableArray 中删除的最佳方法?

objective-c - 如何在标题更改时停止不需要的 UIButton 动画?

objective-c - Swift 编译器错误 : "non-modular header in

ios - 有没有办法遍历字典?

ios - 如何在我的 iOS 应用程序中每 n 分钟更新一次后台位置?