<automate the boring stuff with python> 正则强口令实例
书中7.18的强口令实践题
写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:
长度不少于8 个字符,同时包含大写和小写字符,至少有一位数字。
你可能需要用多个正则表达式来测试该字符串,以保证它的强度。
推荐写法1更接近书中多个正则的含义也更好理解,写法2参考网上零宽断言。
注意写法1的大小写匹配要分开,如果写为[a-zA-Z]则只会匹配大小写字符之一即可,不满足同时有大小写
1 #! python3 2 # 7.18.1 强口令的定义是:长度不少于8 个字符,同时包含大写和小写字符,至少有一位数字。 3 #你可能需要用多个正则表达式来测试该字符串,以保证它的强度。 4 5 import re 6 passwd=str(input('enter a passwd: ')) 7 re1=re.compile(r'.{8,}') 8 re2=re.compile(r'[a-z]') 9 re3=re.compile(r'\d+') 10 re4=re.compile(r'[A-Z]') 11 12 #写法2 13 #re9=re.compile(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$') 14 15 if re1.search(passwd) and re2.search(passwd) and re3.search(passwd) and re4.search(passwd): 16 #if re9.search(passwd): 17 print('passwd is strong enough') 18 else: 19 print('passwd need upper,lower,number and more than 8')
学学学~