我有这个正则表达式 (([A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{ 2,6}
)用于电子邮件地址,我正在尝试创建一个函数来检查字符串是否与其相对应。
我已经尝试过了
func matches() -> Bool
{
let emailRegex : String = "([A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluateWithObject(self) //I use self because this is an extension of String
}
和
func matches() -> Bool
{
let emailRegex : String = "([A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
return self.rangeOfStringrangeOfString(emailRegex, options: .RegularExpressionSearch) != nil
}
但他们要么给我一个运行时错误(使用 NSPredicate),要么说每个电子邮件地址无效(使用 .rangeOfString)
我还在 this link 找到了一个 Regex 类声明这是用 Swift 1.x 编写的(但我可以轻松地将其转换为 Swift 2.x 来构建它),但它也不起作用。
我在 google 上上下搜索,但没有找到有效或可理解的方法(我对 Swift 有点陌生),所以我的问题是:如何检查字符串是否与 Swift 2 中的正则表达式匹配?
最佳答案
正则表达式的开头似乎有一个(有点奇怪)左括号。删除它,看看会发生什么:
let emailRegex : String = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
对我有用。
<小时/>注意:使用正则表达式验证电子邮件通常是一个坏主意。最好尝试发送电子邮件,看看会出现什么错误。
例如,对于 Wikipedia page on email addresses 中给出的某些示例,您的正则表达式将失败。 (特别是带引号的字符串,例如 "very.unusual.@.unusual.com"@example.com
)。
关于regex - 检查字符串是否与正则表达式模式匹配 Swift 2.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192780/