如何检查字符串是否包含c#中的电子邮件

Tie*_*ien 3 c# regex email

在用户输入的文本框上进行电子邮件验证并不难.

但是这次我要检查字符串/段落是否包含电子邮件地址

例如.我想检查以下字符串中是否有电子邮件

"你今天好吗,如果你有兴趣,请发邮件到abc@def.com"

请帮忙.

BRA*_*mel 6

以下是如何实现这一目标:

string para =
    " kjqdshfkjsdfh dskjhskqjdfhk qdhjkdhfj kjhfksjdhf jhjhjhjh@hhhh.com jjhdjfhsfjjd jhjhjhj jkhjhdfjhdjdf@.com ";
var splittedText = para.Split(new char[] {' '});
var mails = splittedText.Where(s => s.Contains("@"));
foreach (var mail in mails)
{
    //here are all your mails  
}
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法验证:

private bool IsEmailValid(string mail)
{
    try
    {                
        MailAddress eMailAddress = new MailAddress(mail);
        return true;
    }
    catch (FormatException)
    {
        return false;  
    }
}
Run Code Online (Sandbox Code Playgroud)

或者只是使用类似的东西:

public static bool ValidateEmail(string str)
{                       
    return Regex.IsMatch(str, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
}
Run Code Online (Sandbox Code Playgroud)

  • "字符串包含电子邮件".地址可能不是整个字符串. (3认同)
  • 这是怎么做到的?OP有一段文本,你的代码只接受电子邮件部分 - 它会抛出一个带有OP输入的`FormatException`. (2认同)