check string包含使用正则表达式的gmail或yahoo或hotmail地址?

时间:2016-05-11 15:32:33

标签: c# regex

我有一堆电子邮件地址,其中包含gmail,yahoo,hotmail等。我需要使用正则表达式从电子邮件地址中删除它们。

现在我正在使用类似^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$来消除gmail地址。但是如何使用相同的表达式检查yahoo,hotmail。

2 个答案:

答案 0 :(得分:2)

如果你想使用正则表达式,你可以使用类似的东西:

[a-zA-Z0-9]{0,}([.]?[a-zA-Z0-9]{1,})[@](gmail.com|hotmail.com|yahoo.com)

答案 1 :(得分:0)

你可以在没有REGEX的情况下做到这一点:

HashSet<string> invalidAddresses = new HashSet<string>() { "@gmail", "@hotmail", "@yahoo" };
string emailToCheck = "someEmail@YAHOO.Com";
if (invalidAddresses.Any(i => emailToCheck.IndexOf(i, StringComparison.CurrentCultureIgnoreCase) > -1))
{
    //Invalid address
}
else
{
    //valid Address
}

如果您要过滤掉包含List<string>的电子邮件地址,则可以执行以下操作:

List<string> emails = new List<string>() {"test@valid.com", "test2@something.com", "test3@hotmail.com", "test4@YAHOO.ca"};
var validEmails = emails.Where(email => !invalidAddresses
                                            .Any(i => 
                                            email.IndexOf(i, StringComparison.CurrentCultureIgnoreCase) > -1))
                         .ToList();

(请记住,内部LINQ也会迭代/循环)