用户名、密码是否为空 用户名是否是合法字符串(邮箱名、IP地址样式、字母加数字等) 要求:5-20位字母、数字或下划线组合,首字符必须为字母。 密码是否合法 要求:5-20位字母、数字或下划线三者中其中两种的组合,首字符必须为数字。
时间: 2024-09-11 10:04:46 浏览: 39
检查用户名和密码的合法性通常涉及以下几个步骤:
1. **用户名验证**:
- 确保用户名长度在5到20个字符之间。
- 验证用户名是否由字母(包括大小写)、数字和下划线组成。
- 需要确保首字符一定是字母。
```python
import re
def is_valid_username(username):
pattern = r"^[a-zA-Z][a-zA-Z0-9_]{4,18}$"
return bool(re.match(pattern, username))
```
2. **密码验证**:
- 检查密码长度同样在5到20个字符之间。
- 需要满足包含至少两种字符类型:字母和数字(不包括下划线)。
- 首字符必须是数字。
```python
def is_valid_password(password):
pattern = r"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{5,20}$"
return bool(re.match(pattern, password))
```
如果你需要编写完整的函数来同时验证用户名和密码:
```python
def validate_credentials(username, password):
if not username or len(username) < 5 or len(username) > 20:
return False, "用户名长度不符合要求"
if not is_valid_username(username):
return False, "用户名格式错误"
if not password or len(password) < 5 or len(password) > 20:
return False, "密码长度不符合要求"
if not is_valid_password(password):
return False, "密码格式错误"
# 如果所有条件都通过,返回True
return True, None
```
阅读全文