如何从文本中快速提取所有电子邮件地址

use*_*621 2 regex swift

我有一条文字

var txt =“+abc@gmail.com 嘿yyyy酷+def@gmail.com”

我想从文本中提取电子邮件地址并将其存储在数组中。我想用正则表达式来做到这一点。我找到了正则表达式,但无法将电子邮件保存到数组中。

我试过

let regEx = "/(\\+[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)/gi"
if let email = NSPredicate(format: "SELF MATCHES %@", regEx) {
        //what to do here
}
Run Code Online (Sandbox Code Playgroud)

还是我做错了?我知道这是一个基本问题。请帮忙

提前致谢。

tay*_*yen 6

这些代码对我有用。您可以从这里查看电子邮件正则表达式。

环球银行金融电信协会5

func extractEmailAddrIn(text: String) -> [String] {
    var results = [String]()

    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    let nsText = text as NSString
    do {
        let regExp = try NSRegularExpression(pattern: emailRegex, options: .caseInsensitive)
        let range = NSMakeRange(0, text.count)
        let matches = regExp.matches(in: text, options: .reportProgress, range: range)

        for match in matches {
            let matchRange = match.range
            results.append(nsText.substring(with: matchRange))
        }
    } catch (let error) {
        print(error)
    }

    return results
}
Run Code Online (Sandbox Code Playgroud)

环球银行金融电信协会3

func extractEmailAddrIn(text: String) -> [String] {
    var results = [String]()
    
    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    let nsText = text as NSString
    do {
        let regExp = try NSRegularExpression(pattern: emailRegex, options: NSRegularExpressionOptions.CaseInsensitive)
        let range = NSMakeRange(0, text.characters.count)
        let matches = regExp.matchesInString(text, options: .ReportProgress, range: range)
        
        for match in matches {
            let matchRange = match.range
            results.append(nsText.substringWithRange(matchRange))
        }
        
    } catch _ { 
    }
    
    return results
}
Run Code Online (Sandbox Code Playgroud)