用于将电子邮件地址与域匹配的正则表达式

鉴于我有域模式


domain.com

sub.domain.com

*.com

*.domain.com

sub.*.com

鉴于我将有以下格式的电子邮件地址


user@domain.com

user@sub.domain.com

是否可以制作 1 个正则表达式模式来查找电子邮件地址是否与域模式之一匹配?


鸿蒙传说
浏览 229回答 3
3回答

狐的传说

在这种情况下,*.com 包括所有其他模式。您可以检查电子邮件endwith .com是否足以满足您的需求List<string> emails = new List<string>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@domain.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@sub.domain.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@asd.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@.sub.asdas.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@.sub.asdas.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };Regex regex = new Regex(@"(domain\.com)|(sub\.*\.com)");emails= emails.Where(e => regex.IsMatch(e)).ToList();如果要使用正则表达式检查多个模式,可以使用 |List<string> emails = new List<string>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@domain.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@sub.domain.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@asd.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@.sub.asdas.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "a@.sub.asdas.com",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };Regex regex = new Regex(@"(domain.com)|(sub.*.com)");emails= emails.Where(e => regex.IsMatch(e)).ToList();

缥缈止盈

您不需要正则表达式。可以用 linq 完成:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string[] domains = { "*.sub.domain.com", "*.com", "*.domain.com", "sub.*.com" };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string email = "abc.sub.domain.com";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string user = "abc";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bool match = domains.Any(x => x.Replace("*", user) == email);

慕莱坞森

试试这个正则表达式:^ [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) $它适用于任何域和邮件服务提供商。我试过这个,它有效
打开App,查看更多内容
随时随地看视频慕课网APP