Skip to content
Advertisement

How to re.search module on python

In a part of my program, I have to check an email entered and I want to make it so any domain name can work for the checker, current code as below;

import re #needed to check email
emailFormat = '^[a-z0-9]+[._]?[a-z0-9]+[@]w+[.]w+$' #general form of email

def check(email):  #Validation for email
    if(re.search(emailFormat,email)): #pass expression and string in  search() 
        return "Valid Email"
    else:  
        return "Invalid Email"

enterEmail=str(input('enter email'))

print(check(enterEmail))

Currently, this will work for any email in for example@email.com but as some emails are in the form example@email.co.uk so how can I can make ’emailFormat’ valid for any domain form. Also, the check will work for company/school emails, for example, example@school.com or example@email.school just anything which doesn’t contain a ‘two-part’ domain name like ‘co.uk’ so will I need another variable to check for that or is it possible to do in one command.

Thanks in advance for anything useful.

Advertisement

Answer

This will work on the two letters domains as well, and on email.school as well.

import re #needed to check email
emailFormat = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$)"

def check(email):  #Validation for email
    if(re.search(emailFormat,email)): #pass expression and string in  search()
        return "Valid Email"
    else:
        return "Invalid Email"

enterEmail=str(input('enter email'))

print(check(enterEmail))

Further reading on the above :- https://emailregex.com/

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement