python 正则匹配

正则匹配

现公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分;此外,密码的组成可以由字母,数字,以及符号构成。

以下为密码分数判断选项,每项判断只能拿一个分项:

  • 密码长度:
  • 5 分: 小于等于4个字符
  • 10 分: 5到7字符
  • 25 分: 大于等于8个字符
  • 字母:
  • 0 分: 没有字母
  • 10 分: 全都是小(大)写字母
  • 20 分: 大小写混合字母
  • 数字:
  • 0 分: 没有数字
  • 10 分: 1个数字
  • 20 分: 大于1个数字
  • 符号:
  • 0 分: 没有符号
  • 10 分: 1个符号
  • 25 分: 大于1个符号
  • 奖励:
  • 2 分: 字母和数字
  • 3 分: 字母、数字和符号
  • 5 分: 大小写字母、数字和符号

最后的评分标准:

大于等于90: 非常安全
大于等于80: 安全
大于等于70: 非常强
大于等于 60: 强
大于等于 50: 一般
大于等于 25: 弱
大于等于0: 非常弱

当用户输入一个密码字符串后,判断密码等级,并输出

输入描述:

输出:

代码实现如下:

<span class="hljs-keyword">import re<br><br><br><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">s1(<span class="hljs-params">password):<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".{,4}$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">5<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".{5,7}$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">10<br><br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".{8,}$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">25<br><br><br><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">s2(<span class="hljs-params">password):<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"[^a-zA-Z]*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">0<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"([a-z]*$)|([A-Z]*$)", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">10<br><br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".*(?=.*[a-z])(?=.*[A-Z]).*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">20<br><br><br><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">s3(<span class="hljs-params">password):<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"[^\d]*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">0<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"[^\d]*[\d][^\d]*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">10<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".*[\d]+.*[\d]+.*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">20<br><br><br><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">s4(<span class="hljs-params">password):<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"[^!@#$%^&*?]*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">0<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"[^!@#$%^&*?]*[!@#$%^&*?][^!@#$%^&*?]*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">10<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".*[!@#$%^&*?]+.*[!@#$%^&*?]+.*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">20<br><br><br><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">s5(<span class="hljs-params">password):<br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".*(?=.*\d.*$)(?=.*[!@#$%^&*?].*$)(?=.*[a-z].*$)(?=.*[A-Z].*$).*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">5<br><br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r"(?=.*\d.*$)(?=.*[!@#$%^&*?].*$)(?=.*[a-zA-Z].*$).*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">3<br><br>    <span class="hljs-keyword">if re.match(<span class="hljs-string">r".*(?=.*[\d].*$)(?=.*[a-zA-Z].*$).*$", password):<br>        <span class="hljs-keyword">return <span class="hljs-number">2<br><br><br>password = <span class="hljs-built_in">input(<span class="hljs-string">"&#x8BF7;&#x8F93;&#x5165;&#x5BC6;&#x7801;&#xFF1A;")<br>ret = <span class="hljs-built_in">sum((s1(password), s2(password), s3(password), s4(password), s5(password)))<br><br><span class="hljs-keyword">if ret >= <span class="hljs-number">90:<br>    print(<span class="hljs-string">"&#x975E;&#x5E38;&#x5B89;&#x5168;")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">80:<br>    print(<span class="hljs-string">"&#x5B89;&#x5168;")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">70:<br>    print(<span class="hljs-string">"&#x975E;&#x5E38;&#x5F3A;")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">60:<br>    print(<span class="hljs-string">"&#x5F3A;")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">50:<br>    print(<span class="hljs-string">"&#x4E00;&#x822C;")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">25:<br>    print(<span class="hljs-string">"&#x5F31;")<br><span class="hljs-keyword">else:<br>    print(<span class="hljs-string">"&#x975E;&#x5E38;&#x5F31;")<br></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

Original: https://www.cnblogs.com/gaogang/p/14888736.html
Author: 小高、
Title: python 正则匹配

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586034/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python中的cls和self区别

    self:Always use self for the first argument to instance methods self是作为类进行实例化传递的第一个参数,也就是我…

    Linux 2023年6月14日
    097
  • 网络通信知识地图

    知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。本篇主要就是从更高的视角将之前的文章的结构思路展现出来。文章结构的思路实际上也是达到架构师程度要掌握的网络通信知…

    Linux 2023年6月14日
    0115
  • python入门基础知识四(字典与集合)

    dict_name = {key1:value1,key2,value2,…} 空字典:dict_name = {} or dict_name = dict() 字典的…

    Linux 2023年6月7日
    074
  • 子网掩码、前缀长度、IP地址数的换算

    子网掩码、前缀长度、IP地址数的换算 子网掩码 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。 如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相…

    Linux 2023年6月6日
    0250
  • Python 多线程

    import threading import time def userTest(aa,bb): print(aa) time.sleep(3) print(bb) if __n…

    Linux 2023年6月6日
    081
  • 【Linux】在Linux下文件io使用(二)

    在linux下,一切皆文件。当文件被打开时,会返回文件描述符用于操作该文件,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2); 0表示标准输入,1表示标准输出,…

    Linux 2023年6月13日
    0116
  • 每天一个 HTTP 状态码 103

    103 Earyly Hints 是被用于在最终的 HTTP 消息前返回一些响应头… 103 Early Hints 103 Earyly Hints 是被用于在最终 …

    Linux 2023年6月7日
    0115
  • SQL52 获取employees中的first_name

    本题链接表结构如下所示(内容不完整):额外的要求是按照first_name最后两个字母升序进行输出。这里需要用到MySQL的字符串处理函数RIGHT。RIGHT函数的语法如下所示:…

    Linux 2023年6月13日
    0125
  • lvs

    1.lvs简介 2.结构体系 3.lvs工作模式及原理 4.配置lvs 4.1 部署lvs-nat模式的httpd负载集群—http协议 4.2 部署lvs-dr模式的…

    Linux 2023年6月13日
    094
  • Ubuntu18.04 + Windows10 双系统安装

    此处忽略Windows10安装!!! 准备 安装环境 OS:Windows10 CPU:Intel(R) Core(TM) i5-10600KF CPU @ 4.10GHz 4.1…

    Linux 2023年5月27日
    0108
  • 账号分享

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月8日
    0114
  • Jenkinsfile Pipeline 使用 SSH 连接

    为了在 Jenkinsfile 的命令中使用 SSH,我们不得不通过一些设置… 前提 首先你需要将用到的 SSH 私钥保存到 Jenkins 的凭据中,这样你会获得一个…

    Linux 2023年6月7日
    0118
  • XXE漏洞学习

    0x00 XXE漏洞介绍: 背景:2018-7-4 微信支付SDK漏洞(XXE漏洞),攻击者可以获取服务器中目录结构,文件内容,eg:代码,各种 私钥。敏感数据泄露 0x01什么是…

    Linux 2023年6月6日
    0112
  • DHCP超级作用域

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    089
  • zabbix自定义监控进程和日志

    自定义监控 进程 日志 mysql主从状态 mysql主从延迟 自定义监控 进程 [root@client ~]# cd /usr/local/etc/ [root@client …

    Linux 2023年6月7日
    0167
  • 【证券从业】金融基础知识-第二章 中国金融体系与多层次资本市场02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-05-31 22:14 陈景中 阅读…

    Linux 2023年6月13日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球