新密码需10位字符以上,且至少包含以下三项:大写、小写、数字、特殊符号,不能与上一次密码相同。
时间: 2023-07-10 07:28:30 浏览: 351
好的,针对您提出的密码规则,可以使用正则表达式来进行密码的校验。下面是一个示例正则表达式:
```
^(?!.*(.).*\1)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/]).{10,}$
```
这个正则表达式的含义是:
- `^` 表示字符串的开始
- `(?!.*(.).*\1)` 表示不包含重复字符的部分,即密码不能包含重复的字符。
- `(?=.*[A-Z])` 表示至少包含一个大写字母。
- `(?=.*[a-z])` 表示至少包含一个小写字母。
- `(?=.*[0-9])` 表示至少包含一个数字。
- `(?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/])` 表示至少包含一个特殊符号。
- `.{10,}` 表示密码长度至少为10位。
- `$` 表示字符串的结束。
使用这个正则表达式,可以快速判断一个字符串是否符合密码规则。例如:
```python
import re
password = 'Abc123!@#'
last_password = 'Abc123'
if (re.match(r'^(?!.*(.).*\1)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+~`\-={}[\]:;"\'<>,.?/]).{10,}$', password)
and password != last_password):
print('密码符合要求')
else:
print('密码不符合要求')
```
这段代码会输出 `密码符合要求`。
阅读全文