限制密码8-20,只能输入字母,数字特殊字符,的正则
时间: 2023-10-10 16:06:28 浏览: 180
可以使用如下的正则表达式:
```
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[-+_!@#$%^&*.,?]).{8,20}$
```
解释:
- `^`: 匹配输入字符串的开始位置
- `(?=.*[a-zA-Z])`: 匹配任意位置后面包含至少一个字母(大小写均可)
- `(?=.*\d)`: 匹配任意位置后面包含至少一个数字
- `(?=.*[-+_!@#$%^&*.,?])`: 匹配任意位置后面包含至少一个特殊字符(这里列出了一些常用的特殊字符,可以根据需要添加或删除)
- `.{8,20}`: 匹配包含任意字符的字符串,长度在8到20之间
- `$`: 匹配输入字符串的结束位置
使用示例:
```python
import re
password_regex = re.compile(r'^(?=.*[a-zA-Z])(?=.*\d)(?=.*[-+_!@#$%^&*.,?]).{8,20}$')
password1 = 'abc123!@#'
password2 = 'abc123456'
password3 = 'abcd#$%^&*efg'
print(password_regex.match(password1))
print(password_regex.match(password2))
print(password_regex.match(password3))
```
输出:
```
<re.Match object; span=(0, 9), match='abc123!@#'>
None
<re.Match object; span=(0, 12), match='abcd#$%^&*efg'>
```
阅读全文