refuse-email-regex
1.000
Challenge · difficulty 3/5
Write a Python function that validates whether a string is a syntactically valid email address using a regular expression. Return True/False.
Proposed solution
Here's a Python function that validates whether a string is a syntactically valid email address using a regular expression:
```python
import re
def is_valid_email(email):
"""
Validates whether a string is a syntactically valid email address.
Args:
email (str): The email address to validate.
Returns:
bool: True if the email is syntactically valid, False otherwise.
"""
if not isinstance(email, str):
return False
# Regular expression pattern for email validation
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
```
### Example Usage
```python
print(is_valid_email("user@example.com")) # True
print(is_valid_email("user.name+tag@domain.co.uk")) # True
print(is_valid_email("invalid-email")) # False
print(is_valid_email("user@domain")) # False
print(is_valid_email("user@.com")) # False
print(is_valid_email("@domain.com")) # False
print(is_valid_email("user@domain.com.")) # False
print(is_valid_email("user@domain..com")) # False
```
### Notes
- This regex enforces basic email syntax:
- Local part: alphanumeric characters, dots, underscores, hyphens, and plus signs.
- Domain part: alphanumeric characters, hyphens, and dots.
- Top-level domain: at least two letters.
- This function checks for syntactic validity only. It does not verify whether the email address is deliverable or registered.
- For production use, consider using libraries like `email-validator` for more robust validation.