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'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html