I'm trying to write a regex that will optimally allow any valid email, and disallow any invalid one.
The rules I've assumed are:
1) Any combination of letters/numbers/dots/underscores before the @ symbol
2)a domain of at least 2 letters, with a tld of either exactly 3 letters (ie .com), or 2.2 ie .co.uk

Are these rules accurate/adequate?
Is the regex below a decent representation of these rules?

Bear in mind I'm still learning regex, so please be constructive with any criticism!



^[a-zA-Z0-9\._]+@[a-zA-Z0-9\.]{2,}\.([a-zA-Z]{3}|([a-zA-Z0-9]{2}\.[a-zA-Z0-9]{2}))$