To simply validate that an entry looks like an email, you can use the following regex pattern.
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,7}\b
copy
Note that this does not imply that the address is valid - it simply passes the most basic checks for it to resemble a valid address. This regex only validates that the address follows a valid email format:
\b
matches a word boundary to ensure that the email address is not part of a larger word.[A-Za-z0-9._%+-]+
matches one or more occurrences of alphanumeric characters, dot, underscore, percent, plus, or hyphen, representing the local part of the email address.@
matches the at symbol.[A-Za-z0-9.-]+
matches one or more occurrences of alphanumeric characters, dot, or hyphen, representing the domain name.\.
matches a literal dot (escaped with backslash).[A-Za-z]{2,7}
matches two to seven occurrences of alphabetic characters, representing the top-level domain (TLD).\b
matches a word boundary to ensure that the email address is not part of a larger word.
This pattern enforces the following rules for email addresses:
- The local part of the email address should contain at least one alphanumeric character, dot, underscore, percent, plus, or hyphen.
- The domain name should contain at least one alphanumeric character, dot, or hyphen.
- The TLD should contain two to seven alphabetic characters.
In the example above, the re.findall()
function is used with the pattern to find all occurrences of email addresses in the given text. The matched email addresses are printed as a list.