首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在iOS 2.0上验证电子邮件地址的最佳实践是什么

在iOS 2.0上验证电子邮件地址的最佳实践是什么
EN

Stack Overflow用户
提问于 2009-04-28 22:37:25
回答 12查看 79.5K关注 0票数 168

验证用户在iOS 2.0上输入的电子邮件地址的最简洁方法是什么?

NOTE:这是一个特定于iOS 2.0的历史问题,由于它的年龄以及有多少其他问题与其相关,因此它不能停用,也不能更改为“现代”问题。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-04-29 14:33:47

到目前为止,我找到的最好的解决方案(也是我最终使用的解决方案)是将RegexKitLite添加到项目中,这样就可以通过NSString类别访问正则表达式。

添加到项目中非常容易,一旦添加到位,任何正则表达式电子邮件验证逻辑都将工作。

票数 17
EN

Stack Overflow用户

发布于 2009-07-19 13:24:04

Using a regular expression to validate an email address的答案非常详细地解释了RFC5322中指定的语法对于基本正则表达式来说太复杂了。

我推荐一种真正的解析器方法,比如 .

作为快速正则表达式的解决方案,请参阅对DHValidation的修改

代码语言:javascript
复制
- (BOOL) validateEmail: (NSString *) candidate {
    NSString *emailRegex =
@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\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-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", emailRegex]; 

    return [emailTest evaluateWithObject:candidate];
}
票数 354
EN

Stack Overflow用户

发布于 2009-04-28 23:04:40

一个好的开始是决定你愿意和不愿意接受什么作为电子邮件地址?

99%的电子邮件地址是这样的: bob.smith@foo.com或fred@bla.edu

然而,从技术上讲,拥有这样的电子邮件地址是合法的: f!#$%&'*+-/=?^_{|}~"ha!"@com

世界上可能只有一小部分顶级域名的有效电子邮件,而且几乎没有人使用大多数其他字符(特别是引号和反引号),所以你可能会认为这些都是无效的事情。但你应该作为一个有意识的决定这样做。

除此之外,按Paul说的做,并尝试将输入与正则表达式匹配,如下所示:^A-Z0-9._%+-+@A-Z0-9.-+.A-Z{2,}$

这将与几乎每个人的电子邮件地址相匹配。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/800123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档