我正在尝试编写一个检查强密码的函数。密码必须包含一个大写字母,一个小写字母和一个数字,并且必须包含8个字符。
import re
def checker():
while True:
userInput = input(' Please input a password ')
passwordRegex = re.compile(r'[a-zA-Z0-9]+ {,8}')
match = passwordRegex.search(userInput)
if match:
print('Good!')
else:
print('Bad!')
checker()
即使密码满足所有要求,此功能也始终输出Bad
。我感觉到错误与我使用正则表达式和变量的方式有关。我正在使用python 3.6。
答案 0 :(得分:1)
扩展here的答案:
passwordRegex = re.compile("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{8,}")
使用前瞻性,我们确保每个组中至少有一个字符,然后总共需要至少8个字符。请注意,您可以通过更改最后一组{8,}
答案 1 :(得分:0)
根据@ Aran-Fey和@Tomerikoo的反馈,我已经更新了代码,现在可以使用了。
import re
def checker():
while True:
userInput = input(' Please input a password ')
passwordRegex = re.search(r'^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$',userInput)
if passwordRegex:
break
print('Good!')
checker()