3 回答

TA贡献1804条经验 获得超3个赞
在这种情况下,*.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();
如果要使用正则表达式检查多个模式,可以使用 |
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();

TA贡献2041条经验 获得超4个赞
您不需要正则表达式。可以用 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);

TA贡献1810条经验 获得超4个赞
试试这个正则表达式:
^ [a-zA-Z0-9 _. + -] + @ (?: (?: [a-zA-Z0-9 -] +.)? [a-zA-Z] +.)? (provider1 | provider2 ). (domain1 | domain2) $
用这个例子尝试了这个正则表达式:abc123@provider1.domain1 - 是有效的
带有子域的电子邮件的正则表达式:
^ [a-zA-Z0-9 _. + -] + @ (?: (?: [a-zA-Z0-9 -] +.)? [a-zA-Z] +.)? (sub1 | sub2 ). (provider1 | provider2). (domain1 | domain2) $
它适用于任何域和邮件服务提供商。我试过这个,它有效
- 3 回答
- 0 关注
- 228 浏览
添加回答
举报