首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中使用regex进行密码验证,而不使用重复字符

在python中使用regex进行密码验证,而不使用重复字符
EN

Stack Overflow用户
提问于 2018-06-18 04:02:53
回答 1查看 417关注 0票数 -2

该参数是一个字符串。检查它是否构成安全密码。密码在以下情况下是安全的:

  • 至少有一个小写字母,
  • 至少有一个大写字母,
  • 至少有一个数字,
  • 至少有一个特殊字符(+,-,*,/,.或者@),
  • it至少包含8个字符,
  • it最多包含20个字符,
  • 没有三个相等的连续字符(例如'a7XXX @ fda‘因为XXX而无效),
  • 没有三个字符的组出现多次(例如'XYZ.1a.XYZ’因为XYZ出现两次而无效)。

我试过了:

代码语言:javascript
复制
regex = [r'^.{8,20}$', r'[a-z]+', r'[A-Z]+', r'\d+', r'[-+*/.@]', r'(.)(.)(.)(\1\2\3)']

return all(re.search(pas, password) for pas in regex)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 06:31:00

您可以使用先行断言:

代码语言:javascript
复制
import re

reg=re.compile(r"(?=.*[a-z]+.*)(?=.*[A-Z]+.*)(?=.*\d+.*)(?=.*[-\+\*\./@]+.*)(?!.*(.)\1\1.*)(?!.*(.{3}).*\2.*).{8,20}$")

pwds=[ "aA3@5678", "aA3@567","abcdefghABCDEFGH+-*3","abcdefghABCDEFGH+-*3X","aA3@555678","aA3@@@5678", "a_A3Q_5678*A3Q", "a_A+Q_3.14/-5678*A+Q"]


for pwd in pwds:
    m=reg.fullmatch(pwd)
    print("{}: {}".format(pwd,"good" if m else "bad"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50900038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档