$re = '/^[a-z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,64}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,64}[a-z])?){1,2}$/mi';
$str = 'bhagat.ali@gmail.com
bhagat.ali@gmail
abhagat@capitalone.com
bhagat.ali@gmail.co.in
bhagat.ali@gmail.co-in
bhagat.ali@gmail.co.
bhagat.ali@gmail.co.in.ca
bhagat.ali@gmail.co.in.ca.
bhagat.ali@gmail...com
ali!b@gmail.com
ali#b@gmail.com
ali$b@gmail.com
ali%b@gmail.com
ali&b@gmail.com
ali\'b@gmail.com
ali***$$$b@gmail.com
ali+++b@gmail.com
ali////b@gmail.com
ali===Tets@gmail.com
ali????b@gmail.com
ali^^^^^^b@gmail.com
ali____b@gmail.com
ali````b@gmail.com
ali{{{{}}}}b@gmail.com
ali|||||b@gmail.com
ali~~~~b@gmail.com
ali------b@gmail.com
bhagat.ali@12345678901234567890123456789012345678901234567890123456789012345678.com
bhagat.ali@12345678901234567890123456789012345678901234567890123456789012345.com
bhagat@c.99a';
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