正则表达式

正则表达式匹配模式

干嘛那么累,把这几个记住就行了!!!

模式 描述
^ 匹配字符串的开头
$ 匹配字符串的末尾。
. 匹配除 “n” 之外的任何单个字符。
[…] 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,’m’或’k’
[^…] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
a| b 匹配a或b
w 匹配字母数字及下划线 等价于'[A-Za-z0-9_]’
W 匹配非字母数字及下划线 等价于 ‘[^A-Za-z0-9_]’。
s 匹配任意空白字符,等价于 [ tnrf]
S 匹配任意非空字符
d 匹配任意数字,等价于 [0-9].
D 匹配任意非数字

python中使用正则表达式的函数

re.match()

re.search(pattern, string): 在字符串中搜索与模式匹配的第一个位置。如果匹配成功,返回一个Match对象;否则,返回None

re.search()

re.search(pattern, string): 在字符串中搜索与模式匹配的第一个位置。如果匹配成功,返回一个Match对象;否则,返回None

re.findall()

re.findall(pattern, string): 查找字符串中所有与模式匹配的位置,并返回一个包含所有匹配结果的列表。

re.sub()

re.sub(pattern, repl, string): 在字符串中查找与模式匹配的位置,并用repl替换它们。

re.split()

re.split(pattern, string): 根据模式将字符串分割为子字符串,并返回一个列表。

案例

匹配邮箱

匹配邮箱:任意字母数字@任意字母数字.任意字母

import re

email1 = "hhhhhhhhh@example.com"    #正例 
email2 = "invalid_email.com"        #反例
email3 = "test@sub.example.com"     #反例
pattern = r'^[w^_]+@[0-9a-zA-Z]+.[w^_^0-9]+$'    #开头匹配任意个字母数字+@+任意字母数字下划线+转义.+任意字母
match = re.match(pattern, email1)
print("邮箱地址有效") if match is not None else print("邮箱地址无效")

匹配身份证

身份证匹配:连续的17个数字,最后一个可以是X或x或数字

import re

def validate_id_card(id_card):
    pattern = r'^d{17}(d|X|x)$'
    match = re.match(pattern, id_card)
    if match:
        print("身份证号码有效")
    else:
        print("身份证号码无效")

# 测试身份证号码
id_card1 = "110101199001011234" #有效
id_card2 = "11010119900101123X" #有效
id_card3 = "12345678901234567"  #少一位

validate_id_card(id_card1)
validate_id_card(id_card2)
validate_id_card(id_card3)

密码匹配

密码设置:设置密码在8到12为,至少有一种特殊字符,包含字母大小写。

import re

def check_password(password):
    # 密码长度检查
    if len(password) < 8 or len(password) > 20:
        print("密码长度应为8到20个字符")
        return False

    # 字符类型检查
    if not re.search(r"[a-z]", password):
        print("密码应包含至少一个小写字母")
        return False
    if not re.search(r"[A-Z]", password):
        print("密码应包含至少一个大写字母")
        return False
    if not re.search(r"[!@#$%^&*(),.?":{}|<>]", password):
        print("密码应包含至少一个特殊字符")
        return False
    # 密码符合要求
    print("密码符合要求")
    return True

# 测试密码
password1 = "Abcd1234!" #符合要求  
password2 = "password"  #只要有一个大写字母
password3 = "12345678"  #至少有一个小写字母
password4 = "Abcdefg1"  #至少有一个特殊字符
password5 = "Abc123"    #密码长度在8到20个字符之间

check_password(password1)
check_password(password2)
check_password(password3)
check_password(password4)
check_password(password5)

Share