using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?im)^(?=.{1,64}@)(?:(""[^""\\]*(?:\\.[^""\\]*)*""@)|([0-9a-z](?:\.(?!\.)|[-!#\$%&'\*\+\/=\?\^`\{\}\|~\w])*@))(?=.{1,255}$)(?:(\[(?:\d{1,3}\.){3}\d{1,3}\])|((?:(?=.{1,63}\.)[0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9])|((?=.{1,63}$)[0-9a-z][-\w]*))$";
string input = @"// Mix valid/invalid
david.jones@proseware.com
d.j@server1.proseware.com
jones@ms1.proseware.com
j.@server1.proseware.com
j@proseware.com9
js#internal@proseware.com
j_9@[129.126.118.1]
j..s@proseware.com
js*@proseware.com
js@proseware..com
js@proseware.com9
j.s@server1.proseware.com
""j\""s\""@proseware.com
js@contoso.中国.com
=========================================
// Valid
sudhansu_@gmail.com
simp_le@example.com
very.common@example.com
disposable.style.email.with+symbol@example.com
other.email-with-hyphen@example.com
fully-qualified-domain@example.com
user.name+tag+sorting@example.com
fully-qualified-domain@example.com
x@example.com
carlosd'intino@arnet.com.ar
example-indeed@strange-example.com
admin@mailserver1
example@s.example
"" ""@example.org
""john..doe""@example.org
// Invalid
Abc.example.com
A@b@c@example.com
a\""b(c)d,e:f;g<h>i[j\\k]l@example.com
just\""not\""right@example.com
this is\""not\\allowed@example.com
this\\ still\""not\\allowed@example.com
1234567890123456789012345678901234567890123456789012345678901234+x@example.com
john..doe@example.com
john.doe@example..com
";
foreach (Match m in Regex.Matches(input, pattern))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx