C# 用于将电子邮件地址匹配到域的正则表达式
假设我有C# 用于将电子邮件地址匹配到域的正则表达式,c#,regex,C#,Regex,假设我有 domain.com sub.domain.com *.com *.domain.com sub.*.com 鉴于我将有电子邮件地址的格式 user@domain.com user@sub.domain.com 是否可以创建1个正则表达式模式来查找电子邮件地址是否与某个域模式匹配?在这种情况下,*.com包含所有其他模式。你可以查看电子邮件endwith.com是否足够 List<string> emails = new List<string>
domain.com
sub.domain.com
*.com
*.domain.com
sub.*.com
鉴于我将有电子邮件地址的格式
user@domain.com
user@sub.domain.com
是否可以创建1个正则表达式模式来查找电子邮件地址是否与某个域模式匹配?在这种情况下,*.com包含所有其他模式。你可以查看电子邮件endwith.com是否足够
List<string> emails = new List<string>
{
"a@domain.com",
"a@sub.domain.com",
"a@asd.com",
"a@.sub.asdas.com",
"a@.sub.asdas.com",
};
Regex regex = new Regex(@"(domain\.com)|(sub\.*\.com)");
emails= emails.Where(e => regex.IsMatch(e)).ToList();
试试这个正则表达式:
^[a-zA-Z0-9+-]+:?:[a-zA-Z0-9-]+.?[a-zA-Z]+.?提供者1 |提供者2.域1 |域2$
使用以下示例尝试此正则表达式:abc123@provider1.domain1-有效
带有子域的电子邮件的正则表达式:
^[a-zA-Z0-9+-]+:?:[a-zA-Z0-9-]+.?[a-zA-Z]+.?子1 |子2.提供者1 |提供者2.域1 |域2$
它将与任何域和邮件服务提供商合作。我已经试过了,它很有效,你不需要正则表达式。可以使用linq执行以下操作:
string[] domains = { "*.sub.domain.com", "*.com", "*.domain.com", "sub.*.com" };
string email = "abc.sub.domain.com";
string user = "abc";
bool match = domains.Any(x => x.Replace("*", user) == email);
我最终还是同意了
myPattern.Replace("*", myPattern.StartsWith("*") ? "@[A-Za-z0-9]+" : "[A-Za-z0-9]+");
*.com将包括所有其他DOAMIN。那么,为什么要检查其他域呢?
myPattern.Replace("*", myPattern.StartsWith("*") ? "@[A-Za-z0-9]+" : "[A-Za-z0-9]+");