$re = '/(?im)^(?=.{1,64}@)(?:("[^"\\\\]*(?:\\\\.[^"\\\\]*)*"@)|((?:[0-9a-z](?:\.(?!\.)|[-!#\$%&\'\*\+\/=\?\^`\{\}\|~\w])*)?[0-9a-z]@))(?=.{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]*))$/';
$str = '// 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
simple@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
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php