Not an answer to your question, but I d like to quote someone on reddit:
Validating an email address using nothing but a regular expression is like building a house using nothing but a power drill.
This is the only RFC-valid way to do it:
[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80- xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-xf f
15()]*)*)[ 40 ]*)*(?:(?:[^( 40)<>@,;:".\[] 00- 37x80-x ff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|"[^\x80-xff
15 "]*(?:\[^x80-xff][^\x80-xff
15"]*)*")[ 40 ]*(?:([^\x80- xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80 -xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]* )*(?:.[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^ \x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\ x80-xff
15()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x8 0-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|"[^\x80-xff
15"]*(?:\[^x80-xff][^\x80-xff
15"]*)*")[ 40 ]*(?:([^\x 80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^ x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*)*@[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([ ^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^ \x80-xff
15()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37 x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|[(?:[^\x80- xff
15[]]|\[^x80-xff])*])[ 40 ]*(?:([^\x80-xff
15() ]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\ x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:.[ 4 0 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff n 15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
015()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?! [^( 40)<>@,;:".\[] 00- 37x80-xff])|[(?:[^\x80-xff
15[ ]]|\[^x80-xff])*])[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^ x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
1 5()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*)*|(?:[^( 40)<>@,;:". \[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff] )|"[^\x80-xff
15"]*(?:\[^x80-xff][^\x80-xff
15"]*)*")[^ ()<>@,;:".\[]x80-xff 00- 10 12- 37]*(?:(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][ ^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)|"[^\x80-xff n 15"]*(?:\[^x80-xff][^\x80-xff
15"]*)*")[^()<>@,;:".\[] x80-xff 00- 10 12- 37]*)*<[ 40 ]*(?:([^\x80-xff
15()]*(? :(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80- xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:@[ 40 ]* (?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15 ()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15() ]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|[(?:[^\x80-xff
15[]]|\ [^x80-xff])*])[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80- xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]* )*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:.[ 40 ]*(?:([^\x80 -xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x 80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\ [] 00- 37x80-xff])|[(?:[^\x80-xff
15[]]|\[^x80-xff]) *])[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x 80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80 -xff
15()]*)*)[ 40 ]*)*)*(?:,[ 40 ]*(?:([^\x80-xff
15( )]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\ x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*@[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15 ()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|[(?:[^\x80-xff
15[]]| \[^x80-xff])*])[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80 -xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15() ]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:.[ 40 ]*(?:([^\x 80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^ x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:". \[] 00- 37x80-xff])|[(?:[^\x80-xff
15[]]|\[^x80-xff ])*])[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\ x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x 80-xff
15()]*)*)[ 40 ]*)*)*)*:[ 40 ]*(?:([^\x80-xff
15 ()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^ \x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*)?(?:[^ ( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x80-xff])|"[^\x80-xff
15"]*(?:\[^x80-xff][^\x80-xff n 15"]*)*")[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]| ([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*)) [^\x80-xff
15()]*)*)[ 40 ]*)*(?:.[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-x ff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*( ?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 000- 37x80-xff])|"[^\x80-xff
15"]*(?:\[^x80-xff][^\x80- xff
15"]*)*")[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-x ff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*) *))[^\x80-xff
15()]*)*)[ 40 ]*)*)*@[ 40 ]*(?:([^\x80-x ff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80- xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*) *(?:[^( 40)<>@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[ ] 00- 37x80-xff])|[(?:[^\x80-xff
15[]]|\[^x80-xff])*] )[ 40 ]*(?:([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80- xff
15()]*(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-x ff
15()]*)*)[ 40 ]*)*(?:.[ 40 ]*(?:([^\x80-xff
15()]*( ?:(?:\[^x80-xff]|([^\x80-xff
15()]*(?:\[^x80-xff][^\x80 -xff
15()]*)*))[^\x80-xff
15()]*)*)[ 40 ]*)*(?:[^( 40)< >@,;:".\[] 00- 37x80-xff]+(?![^( 40)<>@,;:".\[] 00- 37x8 0-xff])|[(?:[^\x80-xff
15[]]|\[^x80-xff])*])[ 40 ]*(?: ([^\x80-xff
15()]*(?:(?:\[^x80-xff]|([^\x80-xff
15()] *(?:\[^x80-xff][^\x80-xff
15()]*)*))[^\x80-xff
15()]*) *)[ 40 ]*)*)*>)
So let s not.