我有一个电子邮件文本字段,我在其中输入电子邮件地址。现在,如果我在电子邮件地址的末尾输入一个空格,那么它仍然被视为无效的电子邮件。但这不应该是因为用户可以错误地输入这样的输入,我应该在结束时修剪空间或开始。
我使用下面的代码来检查验证。请告诉我最佳解决方案吗?
var isValidEmail: Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" //"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegEx)
return emailTest.evaluate(with: self)
}
答案 0 :(得分:1)
您可以使用允许尾随空格字符的模式:
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}\\s*"
^^^
\s*
模式匹配0个或更多空格字符。
请参阅regex demo。
您的模式将匹配:
MATCHES
一起使用的模式中)[A-Z0-9a-z._%+-]+
- 在字符类中分隔的1个或多个字母,数字和符号@
- @
字符[A-Za-z0-9.-]+
- 1个ASCII字母数字字符,.
或/和-
字符\\.
- 一个点[A-Za-z]{2,64}
- 2到64个ASCII字母\\s*
- 0+空格。答案 1 :(得分:0)
我使用这个功能。
func validateEmail(candidate: String) -> Bool {
let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate.trimmingCharacters(in: .whitespaces))
}