C# 多个电子邮件地址用分号分隔的正则表达式

C# 多个电子邮件地址用分号分隔的正则表达式,c#,regex,C#,Regex,我正在尝试构建一个正则表达式,它允许多封电子邮件只在一个域中用分号分隔 这就是我现在拥有的: @“^(?>\b[\w+-.%]+@gmail\.com(?:[,;]\s*)?)+\b$” 这允许1@gmail.com%2@gmail.com或1@gmail.com&&2@gmail.com. 我只想让它被允许与半酒精分离,因为这。1@gmail.com;2@gmail.com.如果我们有有效的电子邮件(看起来是这样的),那么我们的案例仅限于问题中列出的那些,我们只需对%和&&进行简单替换,表达式

我正在尝试构建一个正则表达式,它允许多封电子邮件只在一个域中用分号分隔

这就是我现在拥有的:

@“^(?>\b[\w+-.%]+@gmail\.com(?:[,;]\s*)?)+\b$”


这允许1@gmail.com%2@gmail.com或1@gmail.com&&2@gmail.com. 我只想让它被允许与半酒精分离,因为这。1@gmail.com;2@gmail.com.

如果我们有有效的电子邮件(看起来是这样的),那么我们的案例仅限于问题中列出的那些,我们只需对
%
&&
进行简单替换,表达式类似于:

(%|&&)|($)
如果字符串结尾可能不需要
如果我正确理解问题,那么此捕获组可能会正常工作:

(%|&&)
如果我们想验证,那么我们的表达式将变得稍微复杂一些

试验
很接近,只需删除单词边界,转义字符类中的连字符并更改最后一部分:

^(?>[\w+\-.%]+@gmail\.com(?:;\s*|$))+$

您可以拆分字符串,然后使用正则表达式验证每个字符串上的电子邮件:

公共字符串地址=”1@gmail.com;2@gmail.com";
public List addressList=addresses.Split(“;”,StringSplitOptions.RemoveEmptyEntries);
公共Regex rx=newregex(@“^\w+([-+.]\w+*@gmail.com$”);
foreach(地址列表中的var电子邮件)
{
var m=接收匹配(电子邮件);
如果(m.成功)
{
//用火柴做点什么
}
}
正则表达式改编自

^(?>[\w+\-.%]+@gmail\.com(?:;\s*|$))+$