我正在尝试构建一个正则表达式,以允许多个电子邮件仅用一个域来用分号分隔。
这就是我现在拥有的:
@"^(?>\b[\w+-.%]+@gmail\.com(?:[,;]\s*)?)+\b$"
这允许1 @ gmail.com%2 @ gmail.com或1 @ gmail.com && 2 @ gmail.com。我只想让它与Semicolmn分隔符一起使用。 1@gmail.com; 2@gmail.com。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果我们看到的是有效的电子邮件,然后我们的案例仅限于问题中列出的案例,我们将对%
和&&
进行简单替换,并以表达式类似于:
(%|&&)|($)
如果字符串的末尾可能不需要;
,那么如果我理解正确的问题,那么该捕获组可能就可以工作:
(%|&&)
如果我们想验证,那么我们的表达式在设计上会变得有些复杂。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(%|&&)|($)";
string substitution = @";";
string input = @"1@gmail.com%2@gmail.com
1@gmail.com&&2@gmail.com";
RegexOptions options = RegexOptions.Multiline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
答案 2 :(得分:0)
您可以拆分字符串,然后使用正则表达式验证每一封电子邮件:
public string addresses = "1@gmail.com;2@gmail.com";
public List<string> addressList = addresses.Split(";",StringSplitOptions.RemoveEmptyEntries);
public Regex rx = new Regex(@"^\w+([-+.']\w+)*@gmail.com$");
foreach(var email in addressList)
{
var m = rx.Match(email);
if(m.Success)
{
//Do something with match
}
}
正则表达式改编自.Net General Match