我知道这可能是一个无效的问题。
对于电子邮件验证,我将使用正则表达式和NSPredicate
. 但我被问到这个,因此试图得到你对此的看法。
如何用于NSFormatter
验证NSTextField
电子邮件地址?
我可以在不NSFormatter
使用正则表达式的情况下做到这一点。但只是想知道这是否可以使用 NSFormatter 来实现?
如果是,如何?任何指导都会有所帮助。
我知道这可能是一个无效的问题。
对于电子邮件验证,我将使用正则表达式和NSPredicate
. 但我被问到这个,因此试图得到你对此的看法。
如何用于NSFormatter
验证NSTextField
电子邮件地址?
我可以在不NSFormatter
使用正则表达式的情况下做到这一点。但只是想知道这是否可以使用 NSFormatter 来实现?
如果是,如何?任何指导都会有所帮助。
但只是想知道这是否可以使用 NSFormatter 来实现?
NSFormatter
旨在进行子类化,每个子类对应于特定类型的数据。这就是为什么我们有NSDateFormatter
, NSNumberFormatter
,NSMassFormatter
等。
据我所知,Foundation 框架没有提供NSFormatter
专门用于电子邮件地址的子类,因此您需要找到其他人编写的或自己编写的子类。看一个关于你的类如何工作NSPersonNameComponentsFormatter
的例子。EmailFormatter
有一个辅助NSPersonNameComponents
类,其中包含全名的各个部分,格式化程序具有类似-stringFromPersonNameComponents:
和-personNameComponentsFromString:
在组件对象和字符串之间转换的方法。
您可能想要做类似的事情:创建一个可以包含电子邮件地址的各个部分的类或结构,然后编写将该类的实例转换为字符串和从字符串转换的方法。要使用格式化程序验证作为字符串给出的地址,请使用格式化程序将字符串转换为您的组件对象,然后检查该对象中的所有必填字段是否具有合法值。
使用此代码
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)
}
}
}