首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSFormatter进行电子邮件验证

使用NSFormatter进行电子邮件验证
EN

Stack Overflow用户
提问于 2020-08-21 00:42:49
回答 2查看 70关注 0票数 0

我知道这可能是一个无效的问题。

对于电子邮件验证,我将使用正则表达式和NSPredicate。但是我被问到了这个问题,所以我想知道你对这个问题的看法。

如何使用NSFormatter验证电子邮件地址的NSTextField

我可以使用正则表达式在没有NSFormatter的情况下完成。但是我很好奇是否可以使用NSFormatter来实现这一点?

如果是,是如何实现的?任何指导都会很有帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-08-28 00:39:29

,但我很好奇,用NSFormatter能做到吗?

NSFormatter旨在被子类化,每个子类对应于一种特定类型的数据。这就是为什么我们有NSDateFormatterNSNumberFormatterNSMassFormatter等。

据我所知,基金会框架并没有提供专门针对电子邮件地址的NSFormatter子类,因此您需要找到其他人编写的子类或您自己编写的子类。有关EmailFormatter类如何工作的示例,请看NSPersonNameComponentsFormatter。有一个辅助的NSPersonNameComponents类,它包含全名的各个部分,格式化程序具有-stringFromPersonNameComponents:-personNameComponentsFromString:等方法,用于在components对象和字符串之间进行转换。

您可能希望执行类似的操作:创建一个可以包含电子邮件地址各个部分的类或结构,然后编写将该类的实例与字符串相互转换的方法。若要使用格式化程序验证作为字符串给定的地址,请使用格式化程序将字符串转换为components对象,然后检查该对象中的所有必填字段是否具有合法的值。

票数 0
EN

Stack Overflow用户

发布于 2020-08-28 00:15:00

使用此代码

代码语言:javascript
复制
  extension String {
// This code is for checking if url is valid, to do email, you need to change the `regEx`
        var validURL: Bool {
            get {
                let regEx = "((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?"
                let predicate = NSPredicate(format: "SELF MATCHES %@", argumentArray: [regEx])
                return predicate.evaluate(with: self)
            }
        }
    }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63509622

复制
相关文章

相似问题

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