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)

大家都在看

  • Redis info参数总结(转)

    可以看到,info的输出结果是分几块的,有Servers、Clients、Memory等等,通过info后面接这些参数,可以指定输出某一块数据。 我刚开始在Gentoo上装的默认版…

    Linux 2023年5月28日
    0115
  • Linux同时输出到管道和标准输出

    想使用Shell脚本对某文本文件中无序的一列数字排序并输出求和结果,文本如下所示: 421350 开头的命令只能输出求和结果,不能同时输出排序结果: [En] The comman…

    Linux 2023年5月27日
    069
  • 文件权限问题导致plink报错 Failed to open 21JAN.log. Try changing the –out parameter.

    晚上起来,想想一直没有解决的问题,所以复制一个目录,开始运行数据,但到了第一步就挖坑 [En] Rise in the evening, think of the problems…

    Linux 2023年5月27日
    068
  • Linux 宿主机故障虚拟机重启rhel6网卡报已使用故障&rhel7网卡无法启动

    宿主机故障虚拟机重启rhel6 网卡 报已使用故障 &rhel7 网卡无法启动 宿主机故障虚拟机重启rhel6网卡 报已使用 一、故障分析 1 、故障现象:RHEL6 虚拟…

    Linux 2023年6月13日
    089
  • 不要使用短路逻辑编写 stl sorter 多条件比较

    最近工期紧、任务多,没有时间更新博客,就水一期吧。虽然是水,也不能太水,刚好最近工作中遇到一个 sorter 多条件排序的问题,花费了半天时间来定位解决,就说说它吧。 公司产品是一…

    Linux 2023年6月6日
    089
  • 记一次vcenter连接esxi失败问题排查(443端口不通)

    vecenter错误 esxi宿主机重启后,vcenter连接esxi提示超时,使用vmware客户端连接esxi也提示超时,开始介入排查。 故障排查 如何进入命令终端 运行alt…

    Linux 2023年6月14日
    066
  • C语言实现九九乘法口诀表

    儿子六岁了,奶奶在家里给孩子教乘法口诀, 昨天又把大学一年级C语言课程上要求实现的九九乘法口诀表用C语言实现了一遍,代码如下: #include int main() { int …

    Linux 2023年6月13日
    084
  • Java基础系列–03_Java中的方法描述

    Java的方法(函数)的描述 方法(1)方法的定义:就是完成特定功能的代码块。注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。(2)格式:修饰符 返回值类型 方法…

    Linux 2023年6月7日
    0105
  • Centos7安装Docker

    一、docker运行流程 举个例子你想使用MySQL镜像,那么执行docker pull 下载镜像的时候 首先它会在本地仓库进行运行,如果本地仓库有你想要的MySQL镜像 那么它会…

    Linux 2023年6月6日
    078
  • 总结

    门诊:11张 张张是主表,主表之王是患者信息住院:12张 张张由入院登记开始,外挂处方点评一张电子病历:12张 病历概要打头来,紧接门(急)病历,急诊留观放尾中,住院病历放最后检验…

    Linux 2023年6月13日
    096
  • springBoot 获取注解参数的原理

    判断每个参数带有注解是哪个,是否存在相应的解析器 寻找合适的处理适配器 DispatcherServlet中的 doDispatch方法 // Determine handler …

    Linux 2023年6月7日
    091
  • 开发环境的搭建

    ​ 一:ubuntu14.04 LTS开发环境搭建 1.1、参考博客 参考的教程如下: ubuntu老版本下载地址 VMware下Ubuntu Server 14.04安装教程(最…

    Linux 2023年6月13日
    078
  • CTF中的一些图形密码

    1.传统猪圈密码 猪圈密码又称为亦称朱高密码、共济会暗号、共济会密码或共济会员密码;是一种以特定符号来替换字母的加密方式在线解密网址:http://moersima.00cha.n…

    Linux 2023年6月6日
    0109
  • bash怎么调用sql并保存结果

    mysql -uroot -pP@ssw0rd123.abc -h127.0.0.1 -P3306 -e \‘select c.TABLE_SCHEMA ,c.TABL…

    Linux 2023年6月7日
    0159
  • linux下应用程序界面初始位置及鼠标拖动失效

    故事背景:最近在适配uos系统,客户端程序启动初始位置乱跳,并不是我设置的屏幕中间,鼠标拖动失效,一度怀疑自己的代码有问题,开始我们的探险之路吧。。。 探索之路:后来goolge发…

    Linux 2023年6月13日
    0108
  • vue3中iview框架初始值赋值问题

    问题:今天有个小伙伴说我们前端有个页面异常奇怪,没有显示数据。 开发小伙伴进行查询之后(非专业前端),明明进行了绑定,页面死活无法渲染,归属于灵异事件了,对于这种灵异事件,我总会想…

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