使用正则表达式从字符串中提取电子邮件地址

时间:2011-09-06 03:03:53

标签: c# regex

我有一个要求,我在

下面有一些文字
Hello 
How r u
Email: mail3456@gg.com
Another email is aaa@zz.com
And not a valid email as invalid@.com

这是一个字符串,我要做的是,我需要找出字符串中是否存在任何电子邮件地址。如果是这样,我需要提取它。

请注意,字符串中可以有多个电子邮件地址。

是否可以使用常规exprerssion这样做。

由于

3 个答案:

答案 0 :(得分:3)

我认为这篇文章是你需要的:

http://www.regular-expressions.info/email.html

范围从:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

要:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

答案 1 :(得分:1)

真的有多行文字吗?从该示例中可以看出,每行最多有一个电子邮件地址。我首先将文本拆分为array of strings,然后使用您选择的正则表达式评估每个单独的字符串。

仅供参考,出于性能原因,您可能希望在进入阵列循环之前实例化正则表达式。我最近惊讶于通过多次重新实例化编译的正则表达式来实现我所采取的性能影响。我进入了一个单例类,所以只有一个实例。

答案 2 :(得分:0)

按空格字符' ''\n'等分割字符串,然后对于包含“@”字符的每个“字”应用:Using a regular expression to validate an email address。即使对我来说,这与提到的问题完全相同。