如何在 python 上 re.search 模块
How to re.search module on python
在我的程序的一部分中,我必须检查输入的电子邮件,我想这样做以便任何域名都可以用于检查器,当前代码如下;
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))
目前,这适用于 example@email.com 中的任何电子邮件,但由于某些电子邮件的格式为 example@email.co.uk 所以我如何才能使 'emailFormat' 对任何域形式。此外,检查将适用于 company/school 电子邮件,例如 example@school.com 或 example@email.school 任何不包含 'two-part' 域名的邮件,例如 'co.uk' 所以我需要另一个变量来检查它还是可以在一个命令中完成。
提前感谢任何有用的东西。
这也适用于两个字母域,email.school 也适用。
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))
进一步阅读以上内容:- https://emailregex.com/
您可以使用此代码并选择最大子域数。根据 this link,电子邮件限制为 255 字节,因此子域不能超过 120 个!
试试30个子域名,我觉得绰绰有余了。
import re # needed to check email
def CheckEmail(email): # Validation for email
'''
Validation for Email
input:
email as "String"
output: ( validation, Email Parts ) as tuple
Validation as "String"
Email Parts as if Valid as List, otherwise None
'''
# Can be decreased. The maximum is 125. according to the link below, the email limmitation is 255 bytes.
subDomainCount = 30
# This is a subdomain pattern
subDomainPattern = r"\.?([\w-]+)?"
# General form of email with maximum subDomainCount parameter
pattern = r"([\w\.-]+)@" + r"([\w-]+)" + (subDomainPattern * subDomainCount) + r"\.([\w-]+)"
# Validation: True, False
emailIsValid = re.search(pattern, email)
# Conditional Statement
if emailIsValid:
# Condition multiple dots with no letters between them
dotpattern = r"[\.]{2}"
if re.search(dotpattern,email):
return "Invalid Email", None
# Finding Email Parts (user + domains)
emailParts = emailIsValid.groups()
# removing empty subdomains
emailParts = [x for x in emailParts if x is not None]
return "Valid Email", emailParts
else:
return "Invalid Email", None
enteredEmail = input("Enter Email: ")
(validation, emailParts) = CheckEmail(enteredEmail)
print(validation)
print("Email Parts:",emailParts)
航站楼:
Enter Email: test3475@website.acro.us
Valid Email
Email Parts: ['test3475', 'website', 'acro', 'us']
Enter Email: test_third@mail.rop.qot.wkfc.org
Valid Email
Email Parts: ['test_third', 'mail', 'rop', 'qot', 'wkfc', 'org']
Enter Email: testmega@mail..com
Invalid Email
Email Parts: None
Enter Email: testbored@mail
Invalid Email
Email Parts: None
您可以通过考虑用户输入的电子邮件的长度来改变 subDomainCount 参数,但我认为没有必要。
如果想深入了解re模块,我自己是从SoloLearn那里学来的。 (在 Python3 课程中,您可以找到模块 9:正则表达式。
在我的程序的一部分中,我必须检查输入的电子邮件,我想这样做以便任何域名都可以用于检查器,当前代码如下;
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))
目前,这适用于 example@email.com 中的任何电子邮件,但由于某些电子邮件的格式为 example@email.co.uk 所以我如何才能使 'emailFormat' 对任何域形式。此外,检查将适用于 company/school 电子邮件,例如 example@school.com 或 example@email.school 任何不包含 'two-part' 域名的邮件,例如 'co.uk' 所以我需要另一个变量来检查它还是可以在一个命令中完成。
提前感谢任何有用的东西。
这也适用于两个字母域,email.school 也适用。
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))
进一步阅读以上内容:- https://emailregex.com/
您可以使用此代码并选择最大子域数。根据 this link,电子邮件限制为 255 字节,因此子域不能超过 120 个! 试试30个子域名,我觉得绰绰有余了。
import re # needed to check email
def CheckEmail(email): # Validation for email
'''
Validation for Email
input:
email as "String"
output: ( validation, Email Parts ) as tuple
Validation as "String"
Email Parts as if Valid as List, otherwise None
'''
# Can be decreased. The maximum is 125. according to the link below, the email limmitation is 255 bytes.
subDomainCount = 30
# This is a subdomain pattern
subDomainPattern = r"\.?([\w-]+)?"
# General form of email with maximum subDomainCount parameter
pattern = r"([\w\.-]+)@" + r"([\w-]+)" + (subDomainPattern * subDomainCount) + r"\.([\w-]+)"
# Validation: True, False
emailIsValid = re.search(pattern, email)
# Conditional Statement
if emailIsValid:
# Condition multiple dots with no letters between them
dotpattern = r"[\.]{2}"
if re.search(dotpattern,email):
return "Invalid Email", None
# Finding Email Parts (user + domains)
emailParts = emailIsValid.groups()
# removing empty subdomains
emailParts = [x for x in emailParts if x is not None]
return "Valid Email", emailParts
else:
return "Invalid Email", None
enteredEmail = input("Enter Email: ")
(validation, emailParts) = CheckEmail(enteredEmail)
print(validation)
print("Email Parts:",emailParts)
航站楼:
Enter Email: test3475@website.acro.us
Valid Email
Email Parts: ['test3475', 'website', 'acro', 'us']
Enter Email: test_third@mail.rop.qot.wkfc.org
Valid Email
Email Parts: ['test_third', 'mail', 'rop', 'qot', 'wkfc', 'org']
Enter Email: testmega@mail..com
Invalid Email
Email Parts: None
Enter Email: testbored@mail
Invalid Email
Email Parts: None
您可以通过考虑用户输入的电子邮件的长度来改变 subDomainCount 参数,但我认为没有必要。 如果想深入了解re模块,我自己是从SoloLearn那里学来的。 (在 Python3 课程中,您可以找到模块 9:正则表达式。