Regex 如何从swift文本中提取所有电子邮件地址
我有一条短信 var txt=+abc@gmail.com你好酷+def@gmail.com 我想从文本中提取电子邮件地址并将其存储在数组中。我想用正则表达式来做。我找到了正则表达式,但无法将电子邮件保存到数组中 我试过了Regex 如何从swift文本中提取所有电子邮件地址,regex,swift,Regex,Swift,我有一条短信 var txt=+abc@gmail.com你好酷+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) {
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
}
还是我做错了?
我知道这是一个基本问题。请帮忙
提前谢谢。看起来您的正则表达式名称不对。您将其声明为正则表达式,但在NSPredicate中使用的是emailRegEx。看起来您的正则表达式名称是错误的。您将其声明为regEx,但在NSPredicate中使用的是emailRegEx。我建议使用NSRegularExpression类而不是NSPredicate。正则表达式的格式来自 以下是一种方法:
let pattern = "(\\+[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)"
let regexp = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
let str = "+abc@gmail.com heyyyyy cool +def@gmail.com" as NSString
var results = [String]()
regexp?.enumerateMatchesInString(str, options: NSMatchingOptions(0), range: NSRange(location: 0, length: str.length), usingBlock: { (result: NSTextCheckingResult!, _, _) in
results.append(str.substringWithRange(result.range))
})
// Gives [+abc@gmail.com, +def@gmail.com]
我建议使用NSRegularExpression类而不是NSPredicate。正则表达式的格式来自
以下是一种方法:
let pattern = "(\\+[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)"
let regexp = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
let str = "+abc@gmail.com heyyyyy cool +def@gmail.com" as NSString
var results = [String]()
regexp?.enumerateMatchesInString(str, options: NSMatchingOptions(0), range: NSRange(location: 0, length: str.length), usingBlock: { (result: NSTextCheckingResult!, _, _) in
results.append(str.substringWithRange(result.range))
})
// Gives [+abc@gmail.com, +def@gmail.com]
这些代码对我有用。您可以从中签出电子邮件正则表达式
这些代码对我有用。您可以从中签出电子邮件正则表达式
你的邮件地址需要加号吗 地址中没有+符号: [a-zA-Z0-9.\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z0-9.\]+ 结果:[abc@gmail.com, def@gmail.com] 在地址中使用+符号: [\\+a-zA-Z0-9.\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z0-9.\]+
结果:[+abc@gmail.com, +def@gmail.com]您需要邮件地址中的加号吗 地址中没有+符号: [a-zA-Z0-9.\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z0-9.\]+ 结果:[abc@gmail.com, def@gmail.com] 在地址中使用+符号: [\\+a-zA-Z0-9.\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z0-9.\]+
结果:[+abc@gmail.com, +def@gmail.com]以下是我创建的字符串扩展,用于从中提取电子邮件,在swift 4中运行良好
extension String {
func getEmails() -> [String] {
if let regex = try? NSRegularExpression(pattern: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}", options: .caseInsensitive)
{
let string = self as NSString
return regex.matches(in: self, options: [], range: NSRange(location: 0, length: string.length)).map {
string.substring(with: $0.range).lowercased()
}
}
return []
}
}
用法
//结果[adil@gmail.com, fraz@gmail.pk, janesmit@precisiencenstruction.com]以下是我创建的字符串扩展,用于从中提取电子邮件,在swift 4中运行良好
extension String {
func getEmails() -> [String] {
if let regex = try? NSRegularExpression(pattern: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}", options: .caseInsensitive)
{
let string = self as NSString
return regex.matches(in: self, options: [], range: NSRange(location: 0, length: string.length)).map {
string.substring(with: $0.range).lowercased()
}
}
return []
}
}
用法
//结果[adil@gmail.com, fraz@gmail.pk, janesmit@precisiencenstruction.com]为什么.ReplacingOccurrencesf:,with:为什么.ReplacingOccurrencesf:,with: