【发布时间】:2011-01-20 23:42:46
【问题描述】:
有没有办法使用 C# 从纯文本中提取所有电子邮件地址。
例如
我的电子邮件地址是 mrrame@gmail.com,他的电子邮件是 mrgar@yahoo.com
应该返回
mrrame@gmail.com、mrgar@yahoo.com
我尝试了以下方法,但它只匹配完美的电子邮件。
public const string MatchEmailPattern =
@"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
+ @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
+ @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
+ @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
public static bool IsEmail(string email)
{
if (email != null) return Regex.IsMatch(email, MatchEmailPattern);
else return false;
}
【问题讨论】:
-
删除正则表达式开头的 ^ 和末尾的 $。此活动除了发送垃圾邮件还有其他目的吗?
-
@Lazarus 不是用于发送垃圾邮件,而是用于网络爬取地址以便建立联系人数据库!删除 ^ 和 $ 有效,但必须添加一些调整以从中提取电子邮件。我已在此发布答案。
-
试试这个stackoverflow.com/a/26274085/1604425 比复杂的正则表达式好得多