iPhone 编程中的电子邮件验证检查可以使用 RegexKitLite 库(iOS2.0)、NSPredicate
(iOS 3.0 及更高版本)和NSRegularExpression
(iOS 4.0)来完成。但是任何人都可以说明一个比另一个有什么优势,哪个是上述三个中最好的验证选项。
问问题
17065 次
7 回答
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];
于 2011-12-15T09:05:14.273 回答
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];
}
于 2013-03-13T14:46:37.320 回答
3
- (BOOL)validateEmail:(NSString *)emailStr
{
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:emailStr];
}
On Button Click :
if (![self validateEmail:[txtEmail text]])
{
alertValidator.message = @"Please Enter Valid Email Address !";
[alertValidator show];
txtEmail.text = @"";
[txtEmail becomeFirstResponder];
}
于 2013-04-01T10:05:20.757 回答
2
我认为最好的选择是Mailgun 的免费电子邮件验证 API。我为它写了一个简单的objective-C包装器:
https://github.com/benzguo/BZGMailgunEmailValidation
BZGMailgunEmailValidator *validator =
[BZGMailgunEmailValidator validatorWithPublicKey:YOUR_PUBLIC_KEY];
[validator validateEmailAddress:self.emailFieldCell.textField.text
success:^(BOOL isValid, NSString *didYouMean) {
// Validation succeeded
} failure:^(NSError *error) {
// Validation failed
}];
如果出现连接错误,验证器将退回到基于正则表达式的验证。
如果您仍想使用正则表达式验证电子邮件,请查看:
于 2013-10-20T19:59:11.180 回答
1
我认为这在很大程度上取决于应用程序支持的最低 iOS 版本,如果有内置类可以完成这项工作,请使用它。正如您所暗示的,您将使用其他一些第 3 方框架以一致的方式支持旧版本。
现在,我会使用NSPredicate
or NSRegularExpression
,两者都从 iOS 4 开始受支持,如果不是 iOS 5,这很可能是新 iOS 应用程序的最低支持版本。
有用的帖子。
于 2011-12-15T09:05:40.310 回答
0
完成电子邮件验证。试试这个
- (BOOL)validateEmailWithString:(NSString*)checkString
{
NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", laxString];
return [emailTest evaluateWithObject:checkString];
}
于 2015-06-10T05:14:14.857 回答
-2
如何在 ios 中创建电子邮件 ID 和密码验证
快点,易于简单验证电子邮件 id 检查代码后是否有用。
- (IBAction)actLogin:(id)sender
{
if([self validateEmailWithString:userNameText.text]==YES)
{
NSLog(@"valid email");
if (passWordText.text.length>6)
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:userNameText.text forKey:@"username"];
[defaults setObject:passWordText.text forKey:@"password"];
[defaults setObject:@"YES" forKey:@"islogin"];
[defaults synchronize];
NSLog(@"Login is Successfully !!");
}
}
else
{
NSLog(@"invalid email and password");
}
}
所以,我希望对你有所帮助。谢谢...
于 2015-09-04T06:18:50.357 回答