Simon Slick Simon Slick

Validate Email Address Format

To view the code and regular expressions used,
enter an email address and indicate your expectation of either

   or   




The code makes extensive use of regular expressions to check email address components for RFC compliance:


RFC Requirements

An email address must consist of a local part and a domain part separated by an @ symbol (x40) with a combined length of no more than 256 characters (254 to accommodate SMTP MAIL & RCPT commands).
  - RFC 3696 - 3 & errata, RFC 5322 - 3.4.1, RFC 5321 - 4.5.3

Local Part:

  1. A non-quoted local part may consist of alpha (a-z) (x61-x7A) (A-Z) (x41-x5A), numeric (0-9) (x30-x39) and the following characters: !#$%&'*+-/=?^_`{|}~ (x21, x23, x24, x25, x26, x27, x2A, x2B, x2D, x2F, x3D, x3F, x5E, x5F, x60, x7B, x7C, x7D, x7E) respectively.
      - RFC 3696 - 3 & errata, RFC 5322 - 3.2.4
     
  2. Dots may also be present in the local part, but can not be the first nor last character, nor adjacent to another dot (.) (x2E).
      - RFC 3696 - 3, RFC 5322 - 3.2.4
     
  3. The local part may be a double quoted (") (x22) string consisting of any ASCII characters except the following: NULL (x00), TAB (x09), LF (x0A), CR (x0D), " (x22), \ (x5C).  However the following are permitted in a local part double quoted string if escaped (preceded by a backslash, (\), (x5C)): x01 thru x09, x0B, x0C, x0E thru x7F.
      - RFC 3696 - 3 & errata, RFC 5322 - 3.2.1 - 3.2.5
     
  4. Maximum length of the local part is 64 characters.
      - RFC 3696 - 3 & errata, RFC 5321 - 4.5.3.1

Domain Part:

  1. Domain part consists of dot separated labels of 1 to 63 characters each, up to a maximum total length of 255 characters (including dot delimiters).
      - RFC 3696 - 2, RFC 1035 2.3.1, RFC 5321 - 4.5.3.1, RFC 2181 - 11
     
  2. Domain labels must begin and end with an alpha (a-z) (x61-x7A) (A-Z) (x41-x5A) or numeric (0-9) (x30-x39) character and may include hyphens (-) (x2D).  In addition, the TLD (last label) must contain at least one alpha character or hyphen (not all numeric), and be at least two characters.
      - RFC 3696 - 2, RFC 1035 2.3.1, RFC 1123 - 2.1
     
  3. Domain must be fully qualified (FQDN) and resolvable to an A or MX domain name system record.
      - RFC 5321 - 3.6
     
  4. Domain may be an IP v4, IP v6 or IP v6/v4 address literal.
      - RFC 3696 - 3, RFC 5321 - 4.1.3, RFC 2373 - 2.2

Please note:

As of RFC's 2822 in 2001 & RFC 3696 (and errata) in 2004, backslash (x5C), is not an RFC compliant component of a non-quoted email address local-part.  "Stated differently, any ASCII graphic (printing) character other than the at-sign (@), backslash, double quote, comma, or square brackets may appear without quoting.  If any of that list of excluded characters are to appear, they must be quoted."
       - RFC 3696 section 3. Restrictions on email addresses

Also, the upper limit on address lengths (local-part@domain-part) should normally be considered to be 256 (254 to accommodate SMTP MAIL & RCPT commands).
       - RFC 3696 - errata"

And also, contrary to some, domain names beginning with a digit are permitted.
       - RFC 1123 - 2.1

Copyright © 2007, 2008, Simon Slick. All Rights Reserved.

Zucchini Validate Email Address Format