These are waaay too complicated. Web developers can't even handle the easy stuff. My email address is of the form [email protected], and email address validators on websites reject my address about 30% of the time because it has two periods.
Discover bank, refuses to accept [email protected], but happily accepted [email protected]
Honestly, I just validate that it has an @ and then let it through. The actual sender (mailgun, or whatever) can do the dirty work for me.