$re = '/^(?=.*(\.((?![^\.]$)[^\.]*)$)|.*@(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$))(?=^.{6,320}$)(?:[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ!#$%&\'*+\/=?^_`{|}~-]+)*|"(?:[\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xFD\xFF\xE6\xC1\xC0\xC2\xC4\xC3\xC5\xC7\xC9\xC8\xCA\xCB\xCD\xCC\xCE\xCF\xD1\xD3\xD2\xD4\xD6\xD5\xDA\xD9\xDB\xDC\xDD\xC6\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f\s]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")(?:(?=@(?:[0-9]{1,3}.){3}[0-9]{1,3})@(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$|(?!@(?:[0-9]{1,3}.){4,}$)@(?:(?:[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ](?:[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ-]*[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ])?\.)+[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ](?:[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ-]*[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ])?)$)/m';
$str = 'jeu de test invalides
-----------
a@123.123.123.123.123
a@123.123.123.123.5
a@222.333.666.888
a@322.111.222.001
a@29.99.352.001
a@124.124.14..124
a@a.f
a@.fr
adresse.de.321.caracteres@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.cccccccccc
.bds@finances.gouv.fr.edu.com
bds.@finances.gouv.fr.edu.com
jeu de test valides
-----------
a@222.111.11.2.tutu.com
a@222.111.11.333.com
a@222.111.com
a@22d2.11d1.com
a@29.99.252.001
a@022.111.222.001
a@124.124.124.124
a@111.111.111.111
a@222.5.22.001
této@194.168.12.5
abc@a.b.c.azertyuiop
a@b.fr
"Abc@def"@example.com
def@example.com
a@b.com
abc@b.fr
abc@a.b.c.fr
abc@a.b.c.azertyuiop
a@b.fr
baltazar.da-silva@douane.finances.gouv.fr
toto@titi.fr
tôto@tïtié.fr
"tôto"@tïtié.fr
"áàâäãåçéèêëíìîïñóòôöõúùûüýÿæÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝÆ"@titiéà.fr
"této"@titiéà.fr
"tàto"@titiéà.fr
"t to"@titiéà.fr
této@titiéà.fr
této@194.168.12.5
customer/department=shipping@example.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
Loïc.Accentué@voilà.fr3';
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