在iOS 2.0上验证电子邮件地址的最佳做法是什么?
验证用户在iOS 2.0上输入的电子邮件地址的最简洁方法是什么?
注意 :这是一个特定于iOS 2.0的历史问题,由于它的年龄以及与其相关的问题有多少,因此它不能退役并且不能更改为“现代”问题。
使用正则表达式验证电子邮件地址的答案详细解释了RFC 5322中指定的语法对原始正则表达式来说过于复杂。
我推荐一种真正的解析器方法,如MKEmailAddress。
作为快速正则表达式解决方案,请参阅DHValidation的此修改:
- (BOOL) validateEmail: (NSString *) candidate {
NSString *emailRegex =
@"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}"
@"~-]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-"
@"x7f]|\[x01-x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-"
@"z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:25[0-5"
@"]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
@"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21"
@"-x5ax53-x7f]|\[x01-x09x0bx0cx0e-x7f])+)])";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", emailRegex];
return [emailTest evaluateWithObject:candidate];
}
阅读RFC。 几乎所有认为他们知道如何解析/清除/验证电子邮件地址的人都是错误的。
http://tools.ietf.org/html/rfc2822 3.4.1节非常有用。 注意
dtext = NO-WS-CTL / ; Non white space controls %d33-90 / ; The rest of the US-ASCII %d94-126 ; characters not including "[", ; "]", or ""
是的,这意味着+,'等都是合法的。
到目前为止我找到的最好的解决方案(以及我最终选择的解决方案)是将RegexKitLite添加到通过NSString类别访问正则表达式的项目。
将项目添加到项目中并且一旦到位,任何正则表达式电子邮件验证逻辑都可以正常工作。
链接地址: http://www.djcxy.com/p/42189.html上一篇: What are best practices for validating email addresses on iOS 2.0
下一篇: What are best practices for validating email addresses on iOS 2.0