检查电子邮件地址在iOS上是否有效 [英] Check that an email address is valid on iOS
问题描述
可能重复:
在iOS 2.0上验证Objective-C中的电子邮件地址的最佳做法
我正在开发一个iPhone应用程序,我需要用户在登录时提供他的电子邮件地址。
检查电子邮件地址是否是有效的电子邮件地址的最佳方式是什么?
好可可功能:
- (BOOL)NSStringIsValidEmail:(NSString *)checkString
{
BOOL stricterFilter = NO; //讨论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];
}
讨论Lax vs. Strict - http://blog.logichigh.com/2010/09/02/validating-an-e -mail-address /
由于类别更好,您还可以添加一个界面:
- (BOOL)isValidEmail; $ $ $ $ $ $
@end
实施
@implementation NSString(emailValidation)
- (BOOL)isValidEmail
{
BOOL stricterFilter = NO; //讨论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.comisValidEmail]){/ * True * /}
if([@InvalidEmail @ notreallyemailbecausenosuffixisValidEmail]){/ * False * /}
Possible Duplicate:
Best practices for validating email address in Objective-C on iOS 2.0?
I am developing an iPhone application where I need the user to give his email address at login.
What is the best way to check if an email address is a valid email address?
Good cocoa function:
-(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];
}
Discussion on Lax vs. Strict - http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
And because categories are just better, you could also add an interface:
@interface NSString (emailValidation)
- (BOOL)isValidEmail;
@end
Implement
@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
And then utilize:
if([@"emailString@email.com" isValidEmail]) { /* True */ }
if([@"InvalidEmail@notreallyemailbecausenosuffix" isValidEmail]) { /* False */ }
这篇关于检查电子邮件地址在iOS上是否有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!