However, a subsequent specification (RFC 1123) permitted hostname labels to start with digits.
To avoid false-positive rejections of actual email addresses in the current and future world, and from anywhere in the world, you need to know at least the high-level concept of RFC 3490, "Internationalizing Domain Names in Applications (IDNA)".
I know folks in US and A often aren't up on this, but it's already in widespread and rapidly increasing use around the world (mainly the non-English dominated parts).
I think it is important to give links to specs, as you really want to get that right, and that's where the spec comes in.
If you are too lazy to read and understand the spec, then please leave checking for allowed characters in email addresses to people who care about that stuf.
Earlier question covering the same material: stackoverflow.com/questions/760150/.
The sad thing is, even though that question is almost 8 months older than this one, the older question has much better answers.
Almost all the answers below were already out of date when they were originally posted.
See Wikipedia entry (and don't worry, it has relevant official references).
addr-spec = local-part "@" domain ; global address local-part = word *("." word) ; uninterpreted ; case-preserved domain = sub-domain *("." sub-domain) sub-domain = domain-ref / domain-literal domain-ref = atom ; symbolic reference ).
The original specification of hostnames in RFC 952, mandated that labels could not start with a digit or with a hyphen, and must not end with a hyphen.