1.密码长度8-20位 2.必须包含:数字,大写字母,小写字母,特殊字符 3.不允许有空格,不能包含用户名
时间: 2024-02-05 14:03:13 浏览: 42
密码符合以下规则,可以使用如下正则表达式进行匹配:
```
^(?!.*用户名)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).{8,20}$
```
其中,`^`和`$`表示字符串的开始和结束;`(?!.*用户名)`表示不允许包含用户名;`(?=.*\d)`表示必须包含数字;`(?=.*[a-z])`表示必须包含小写字母;`(?=.*[A-Z])`表示必须包含大写字母;`(?=.*[\W_])`表示必须包含特殊字符;`.{8,20}`表示密码长度为8到20位。
这个正则表达式使用了零宽度负预测先行断言(negative lookahead)和零宽度正预测先行断言(positive lookahead),它们都是正则表达式中的高级特性。实际使用时,需要将其中的“用户名”替换成具体的用户名。
相关问题
java正则表达式表示的是必须包含小写字母,大写字母和数字以及特殊字符的8到20位字符串。
### 回答1:
Java正则表达式表示的是字符串长度在8到20位之间,且必须包含小写字母、大写字母、数字和特殊字符。
"(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,20}"
### 回答2:
java正则表达式的表示可以用以下的方式:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=])(?=.*[!@#$%^&*(),.?":{}|<>])(?=\\S+$).{8,20}$
解释一下上面的表达式:
- ^ 表示字符串的开始
- (?=.*[a-z]) 表示后面必须至少包含一个小写字母
- (?=.*[A-Z]) 表示后面必须至少包含一个大写字母
- (?=.*\d) 表示后面必须至少包含一个数字
- (?=.*[@#$%^&+=]) 表示后面必须至少包含一个特殊字符,特殊字符包括@#$%^&+=
- (?=.*[!@#$%^&*(),.?":{}|<>]) 表示后面必须至少包含一个特殊字符,特殊字符包括!@#$%^&*(),.?":{}|<>
- (?=\S+$) 表示后面不能包含空格
- .{8,20} 表示长度必须在8到20位之间
- $ 表示字符串的结束
所以这个正则表达式可以验证一个字符串是否满足必须包含小写字母、大写字母、数字、特殊字符和长度在8到20位的要求。
### 回答3:
java正则表达式表示的是必须包含小写字母,大写字母,数字以及特殊字符的8到20位字符串。正则表达式可以使用以下方式表示:
^[a-zA-Z0-9!@#$%^&*()-_=+]{8,20}$
其中:
- ^ 表示匹配字符串的起始位置。
- [a-zA-Z0-9!@#$%^&*()-_=+] 表示可以包含小写字母、大写字母、数字和特殊字符的集合。
- {8,20} 表示字符串的长度范围在8到20位之间。
- $ 表示匹配字符串的结束位置。
这个正则表达式将确保字符串包含小写字母、大写字母、数字和特殊字符,并且长度在8到20位之间。你可以使用这个正则表达式来验证用户输入的字符串是否符合要求。
c++编写程序.能够输入一行不含空格的字符串.统计其中的大写字母小写字母和数字的个数
好的,以下是C++编写的程序,可以实现输入一行不含空格的字符串,统计其中的大写字母、小写字母和数字的个数:
```c++
#include <iostream>
using namespace std;
int main() {
string str;
int upper = 0, lower = 0, digit = 0;
cout << "请输入一行不含空格的字符串:" << endl;
getline(cin, str); // 输入一行字符串
for (char c : str) {
if (c >= 'A' && c <= 'Z') {
upper++;
} else if (c >= 'a' && c <= 'z') {
lower++;
} else if (c >= '0' && c <= '9') {
digit++;
}
}
cout << "大写字母个数:" << upper << endl;
cout << "小写字母个数:" << lower << endl;
cout << "数字个数:" << digit << endl;
return 0;
}
```
程序思路如下:
1. 使用 `string` 类型的变量 `str` 存储输入的字符串;
2. 定义三个变量 `upper`、`lower` 和 `digit` 分别代表大写字母、小写字母和数字的个数,初始化为 0;
3. 使用 `getline` 函数从标准输入流中读取一行字符串赋值给 `str`;
4. 使用 `for` 循环遍历字符串中的每个字符,通过字符的 ASCII 码值判断它是大写字母、小写字母还是数字,并分别对应将 `upper`、`lower` 和 `digit` 变量的值加 1;
5. 输出统计结果。
运行程序,输入一行不含空格的字符串,即可得到大写字母、小写字母和数字的个数。