如何在swift中允许电子邮件字符串中的空格?

时间:2017-11-06 13:57:42

标签: ios regex email

我有一个电子邮件文本字段,我在其中输入电子邮件地址。现在,如果我在电子邮件地址的末尾输入一个空格,那么它仍然被视为无效的电子邮件。但这不应该是因为用户可以错误地输入这样的输入,我应该在结束时修剪空间或开始。

我使用下面的代码来检查验证。请告诉我最佳解决方案吗?

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)
}

2 个答案:

答案 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))
}
相关问题