我有一堆電子郵件地址,其中包含Gmail,雅虎,Hotmail的..等我需要消除他們從電子郵件地址使用正則表達式。檢查字符串是否包含使用正則表達式的gmail或yahoo或hotmail地址?
現在我正在使用類似^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$
來消除Gmail地址。但如何使用相同的表達式來檢查yahoo,hotmail。
我有一堆電子郵件地址,其中包含Gmail,雅虎,Hotmail的..等我需要消除他們從電子郵件地址使用正則表達式。檢查字符串是否包含使用正則表達式的gmail或yahoo或hotmail地址?
現在我正在使用類似^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$
來消除Gmail地址。但如何使用相同的表達式來檢查yahoo,hotmail。
你可以做,沒有正則表達式,如:
HashSet<string> invalidAddresses = new HashSet<string>() { "@gmail", "@hotmail", "@yahoo" };
string emailToCheck = "[email protected]";
if (invalidAddresses.Any(i => emailToCheck.IndexOf(i, StringComparison.CurrentCultureIgnoreCase) > -1))
{
//Invalid address
}
else
{
//valid Address
}
,如果你想篩選出一個List<string>
包含電子郵件地址,然後你可以這樣做:
List<string> emails = new List<string>() {"[email protected]", "[email protected]", "[email protected]", "[email protected]"};
var validEmails = emails.Where(email => !invalidAddresses
.Any(i =>
email.IndexOf(i, StringComparison.CurrentCultureIgnoreCase) > -1))
.ToList();
(請記住,內部LINQ會迭代/循環以及)。
如果你想使用正則表達式,你可以使用類似的東西:
[a-zA-Z0-9]{0,}([.]?[a-zA-Z0-9]{1,})[@](gmail.com|hotmail.com|yahoo.com)
似乎是不必要的正則表達式一天SO ... –