本套课在线学习视频(网盘地址,保存到网盘即可免费观看):

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

通过这些示例代码,您可以更好地理解如何通过正则表达式验证手机号码、邮箱地址、网址和身份证号码。这些技术对于确保数据的准确性和安全性至关重要。