正则匹配
现公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分;此外,密码的组成可以由字母,数字,以及符号构成。
以下为密码分数判断选项,每项判断只能拿一个分项:
- 密码长度:
- 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">"请输入密码:")<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">"非常安全")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">80:<br> print(<span class="hljs-string">"安全")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">70:<br> print(<span class="hljs-string">"非常强")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">60:<br> print(<span class="hljs-string">"强")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">50:<br> print(<span class="hljs-string">"一般")<br><span class="hljs-keyword">elif ret >= <span class="hljs-number">25:<br> print(<span class="hljs-string">"弱")<br><span class="hljs-keyword">else:<br> print(<span class="hljs-string">"非常弱")<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/
转载文章受原作者版权保护。转载请注明原作者出处!