Swift5语法判断给定字符串是否是有效的Email地址,网上找到的使用
NSDataDetector
NSDataDetector
的方式应该有误,发现类似abc@sina.cn.
abc@sina.cn.
这样的地址会判断为正确的Email地址,所以应该使用正则表达式比较保险,直接给出工具方法(2种方式):
普通工具方法
func isEmail(source: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPredicate.evaluate(with: source)
}
func isEmail(source: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPredicate.evaluate(with: source)
}
func isEmail(source: String) -> Bool { let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx) return emailPredicate.evaluate(with: source) }
用Extension的方式
extension String {
var isEmail: Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPredicate.evaluate(with: self)
}
}
// 如何使用
var string = "abc@sina.cn."
print(string.isEmail)
string = "abc@sina.cn"
print(string.isEmail)
extension String {
var isEmail: Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPredicate.evaluate(with: self)
}
}
// 如何使用
var string = "abc@sina.cn."
print(string.isEmail)
string = "abc@sina.cn"
print(string.isEmail)
extension String { var isEmail: Bool { let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx) return emailPredicate.evaluate(with: self) } } // 如何使用 var string = "abc@sina.cn." print(string.isEmail) string = "abc@sina.cn" print(string.isEmail)
文章评论