regex - 检查字符串是否与正则表达式模式匹配 Swift 2.2

标签 regex swift swift2

我有这个正则表达式 (([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/

相关文章:

ios - 具有对象参数的特定文本字段的Swift 2 addObserver

ios - 函数名称后的可选链接问号

regex - 如果仅其行包含特定字符串,则查找并替换单词(Regex Dreamweaver)

c# - 在 C# 中使用正则表达式分组的子字符串

javascript - 将单词与旁边的空格匹配

java - 如何使用正则表达式删除 HashMap 中具有字母数字值的条目?

swift - 在 UIScrollView 中绘制 UIImage

swift - 如何创建之间没有空格的正方形网格?

Swift 4 SpriteKit SKTexture 缩放问题

arrays - 无法将类型 'Int' 的值转换为预期的参数类型 '@noescape (Int?) throws -> Bool'