本套课在线学习视频(网盘地址,保存到网盘即可免费观看):
https://pan.quark.cn/s/4e5eeaa25df3
在数据验证中,正确使用正则表达式来验证手机号码、邮箱地址、网址和身份证号码是确保数据准确性和安全性的关键。本文将通过详尽的示例代码演示这些验证规则及其应用方法。
00:00 - 手机与邮箱验证规则示例
手机号码验证
手机号码的验证规则通常规定首位后七位可以是任意数字。以下是一个示例正则表达式:
import re
def validate_phone_number(phone_number):
pattern = r'^1[3-9]\d{9}$'
return re.match(pattern, phone_number) is not None
# 示例使用
print(validate_phone_number("13812345678")) # True
print(validate_phone_number("23812345678")) # False
邮箱地址验证
邮箱地址必须由数字和字母组成,并且通过+
表示必含某些字符,[]
限定字符集进行校验。
def validate_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
# 示例使用
print(validate_email("example+test@gmail.com")) # True
print(validate_email("example@domain")) # False
01:52 - 邮箱与网址匹配技巧
邮箱与网址匹配
邮箱匹配
使用特定符号匹配邮箱,+
表示必需包含某个字符,[]
用于限定字符集。
def validate_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
# 示例使用
print(validate_email("user+mailbox@domain.com")) # True
print(validate_email("user@domain..com")) # False
网址匹配
网址匹配特别注意开头的协议(https, http或ftp),并且允许使用*
代表任意字符。
def validate_url(url):
pattern = r'^(https?|ftp)://[^\s/$.?#].[^\s]*$'
return re.match(pattern, url) is not None
# 示例使用
print(validate_url("https://www.example.com")) # True
print(validate_url("ftp://example.com/resource")) # True
print(validate_url("htt://example.com")) # False
身份证号码验证
身份证号码的验证依据是前17位必须为数字,最后一位可以是X(大小写不限)或数字。
def validate_id_number(id_number):
pattern = r'^\d{17}[\dXx]$'
return re.match(pattern, id_number) is not None
# 示例使用
print(validate_id_number("12345678901234567X")) # True
print(validate_id_number("12345678901234567x")) # True
print(validate_id_number("123456789012345678")) # True
print(validate_id_number("12345678901234567A")) # False
综合示例
以下是一个综合示例,展示了如何使用正则表达式进行不同类型数据的验证:
def validate_data(data_type, data):
patterns = {
'phone': r'^1[3-9]\d{9}$',
'email': r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
'url': r'^(https?|ftp)://[^\s/$.?#].[^\s]*$',
'id': r'^\d{17}[\dXx]$'
}
pattern = patterns.get(data_type)
if not pattern:
raise ValueError("Unsupported data type")
return re.match(pattern, data) is not None
# 示例使用
print(validate_data('phone', '13812345678')) # True
print(validate_data('email', 'example+test@gmail.com')) # True
print(validate_data('url', 'https://www.example.com')) # True
print(validate_data('id', '12345678901234567X')) # True
通过这些示例代码,您可以更好地理解如何通过正则表达式验证手机号码、邮箱地址、网址和身份证号码。这些技术对于确保数据的准确性和安全性至关重要。