使用正则表达式检查密码强度

2023-11-22

该功能是查看密码的强度。如果满足以下条件,则被认为是强的:

  1. 长度大于或等于10个字符
  2. 它至少包含一位数字
  3. 至少有一个大写字母
  4. 一个小写字母
  5. 密码只能包含 ASCII 拉丁字母或数字

有没有办法减少函数中的代码量?请帮我使函数代码少于200个字符(尝试在不给变量赋值的情况下求解)

import re
def golf(password):
    if len(password) >=  10 \
    and re.search("^[a-zA-Z0-9]+", password) \
    and re.search("[a-z]+", password) \
    and re.search("[A-Z]+", password) \
    and re.search("[0-9]+", password):
        print(password, True)
        return True
    else:
        print(password, False)
        return False


if __name__ == '__main__':
    golf('A1213pokl') == False
    golf('bAse730onE') == True
    golf('asasasasasasasaas') == False
    golf('QWERTYqwerty') == False
    golf('123456123456') == False
    golf('QwErTy911poqqqq') == True
    golf('..........') == False

虽然您已经有了答案,但我什至会尝试优化该模式。代替.*然后回溯,我会应用对比原理直接地:

(?=\D*\d)          # NOT a number, 0+ times, then one number
(?=[^A-Z]*[A-Z])   # NOT an UPPERCASE, 0+times, then an UPPERCASE
(?=[^a-z]*[a-z])   # same with lowercase
^[A-Za-z0-9]{10,}$ # allowed characters, 10+, with anchors on both sides

浓缩和demo:

(?=\D*\d)(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])[A-Za-z0-9]{10,}$

这里的想法是,虽然.*让你顺势而下,然后又原路返回,上面的模式可能会更快结束。


At last the Python snippet:
import re

def golf(password=None):
    rx = re.compile(r'(?=\D*\d)(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])[A-Za-z0-9]{10,}$')
    return True if rx.match(password) else False

passwords = ['A1213pokl', 'bAse730onE', 'asasasasasasasaas', 'QWERTYqwerty', '123456123456', 'QwErTy911poqqqq', '..........']
vectors = [golf(password) for password in passwords]
print(vectors)
# [False, True, False, False, False, True, False]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式检查密码强度 的相关文章

随机推荐

  • 来自闪亮应用程序的写入权限

    这是对此的后续问题 write csv 许可闪亮服务器 R 我正在使用一个闪亮的应用程序来搜索和保存一些数据 我在获取文件夹权限时遇到问题 读完这篇文章后 https groups google com forum topic shiny
  • Hadoop MapReduce 读取文本文件

    我正在尝试编写一个 MapReduce 程序 它可以读取输入文件并将输出写入另一个文本文件 我计划为此使用 BufferedReader 类 但我真的不知道如何在 MapReduce 程序中使用它 我怎样才能为其编写代码片段 附 我对 Ha
  • Meteor.js:查找所有文档并以相反的自然顺序返回

    我正在尝试返回集合中的所有文档 以将其与模板中的 each 一起使用 我的代码如下所示 return Answers find sort natural 1 但文档按自然顺序返回 而不是反向 有谁知道为什么 我从 MongoDB 文档中获取
  • WinMerge:如何在比较中忽略特定单词?

    当我在 Windows 平台上使用 WinMerge 比较 2 个文件时 您知道如何忽略特定单词吗 我的意思是我想对 WinMerge 说 不要关心那串单词 房子 花园等 所以当比较这两行时 the house is at london t
  • 由于来自 localhost 的 CORS 问题,请求失败

    我在 SO 和不同的博客上看到了几十个问题 并用 答案 谈论这个问题 但都无济于事 我的本地计算机 Ubuntu 16 04 上有一个 React js 应用程序 在本地 我尝试通过运行来测试它npm start它会打开浏览器http 本地
  • 列出所有当前打开的文件句柄? [复制]

    这个问题在这里已经有答案了 可能的重复 检查Python中打开了哪些文件 Hello 是否可以获得所有当前打开的文件句柄的列表 我认为它们存储在环境中的某个位置 我对这个函数感兴趣 因为我想安全地处理出现致命错误时打开的任何文件 即关闭文件
  • 使用 Python 使用 IAM 角色连接到 Redshift

    我正在使用 sqlalchemy 和 psycopg2 将 python 连接到 redshift engine create engine postgresql user password hostname port database n
  • Slick,如何将查询映射到继承表模型?

    Slick 如何将查询映射到继承表模型 IE 我有表A B C A 是 父 表 B 和 C 是 子 表 我想知道的是我应该如何使用 slick 对此进行建模 以便 A 将是抽象的 B C 具体类型 并且查询 A 中的行将导致 B 或 C 对
  • 为什么 for_each 通过 move 返回函数

    我正在阅读文档std for each here http en cppreference com w cpp algorithm for each并看到返回值是std move f 为什么标准强制在返回值中移动输入参数 既然输入参数是按值
  • C++11 中的 POD 和继承。 struct的地址==第一个成员的地址吗?

    我编辑了这个问题以避免分心 在任何其他问题有意义之前 需要先解决一个核心问题 向任何现在看来答案似乎不那么相关的人道歉 让我们设置一个具体的例子 struct Base int i 没有虚方法 也没有继承 通常是一个非常愚蠢和简单的对象 因
  • 如何在 Nuxt 3 应用程序中添加页面加载器

    我正在使用 Nuxt 3 构建一个应用程序 我想添加一个页面加载器直到网站加载 根据本文 有一种简单但有限的解决方案和一种完全定制的解决方案 内置
  • Oracle:消除表和模式名称之间的歧义

    假设我有模式A and B 在模式中A我想打电话包X在模式中B 然而 有一个包B在模式中A A package B B package X 当我从架构 A 调用时 begin b x foo end 它寻找程序X包装内B i e A B X
  • Python:freeze.py 在哪里?

    有人知道 2 6 5 的 freeze py 安装在哪里吗 我似乎无法在任何地方找到它 是不是被拔出来换成别的东西了 它就在它一直在的地方 在下面Tools 在源分布中
  • 如何使用 Work Light 通过服务器端 javascript 发出 HTTPS 请求?

    我正在玩弄IBM 工作灯 并且我正在尝试创建一个适配器来从Google 地点 API 我想调用这个网址 https maps googleapis com maps api place search json key AIzaSyCTlPm
  • Haskell 中目录的流式递归下降

    我正在尝试使用 Haskell 进行目录结构的递归下降 我只想根据需要 懒惰地 检索子目录和文件 我编写了以下代码 但是当我运行它时 跟踪显示在第一个文件之前访问了所有目录 module Main where import Control
  • Haskell 中生成列表的唯一组合的函数

    是否有一个 Haskell 函数可以从列表中生成给定长度的所有唯一组合 Source 1 2 3 uniqueCombos 2 Source 1 2 1 3 2 3 我尝试在 Google 中查找 但找不到专门执行此操作的函数 排列不会给出
  • H5py存储字符串列表的列表

    h5py 是否有可能创建一个由字符串列表组成的数据集 我尝试创建一个可变长度的嵌套数据类型 但这会导致我的 python 解释器出现分段错误 def create dataset h5py file data I am a sentecne
  • 我们可以在 Web 应用程序中同时使用 jQuery 和 AngularJS 吗?

    我们可以在 Web 应用程序中同时使用 jQuery 和 AngularJS 吗 我读过一些建议 说不要在项目中同时使用两者 因为两者都有不同的生命周期 我们的要求是使用 ASP NET WebApi 和 AngularJS 构建响应式 W
  • 我应该在我的最新项目中使用 Cocoa 绑定吗?

    我正在启动一个项目 我认为该项目将从绑定中受益 我有一个源列表表 几个浏览器视图等 但我认为如果没有它们 它也是相当可行的 也许更容易理解 根据我有限的经验 我发现绑定很难排除故障 而且非常 神奇 例如 很难在任何地方插入日志记录来找出哪里
  • 使用正则表达式检查密码强度

    该功能是查看密码的强度 如果满足以下条件 则被认为是强的 长度大于或等于10个字符 它至少包含一位数字 至少有一个大写字母 一个小写字母 密码只能包含 ASCII 拉丁字母或数字 有没有办法减少函数中的代码量 请帮我使函数代码少于200个字