js 正则 密码长度8-20个字符,并且要包含大写字母、小写字母、数字、符号任意三种
时间: 2023-10-19 07:02:52 浏览: 260
为了实现密码长度为8-20个字符,同时要包含大写字母、小写字母、数字和符号中的任意三种,我们可以使用正则表达式来进行验证。
首先,我们可以使用正则表达式`.{8,20}`来匹配长度为8-20个字符的密码。其中`.`表示可以匹配任意字符,`{8,20}`表示前面的字符必须匹配8到20次。
其次,我们可以使用正则表达式`(?=.*[A-Z])`来匹配是否包含至少一个大写字母。其中`.*`表示可以匹配任意字符的任意次数,`[A-Z]`表示匹配大写字母。使用`(?=...)`表示正向预查,即匹配某个位置前面的内容是否满足某个模式。
然后,我们可以使用正则表达式`(?=.*[a-z])`来匹配是否包含至少一个小写字母。同样地,`[a-z]`表示匹配小写字母。
接着,我们可以使用正则表达式`(?=.*\d)`来匹配是否包含至少一个数字。其中`\d`表示匹配数字。
最后,我们可以使用正则表达式`(?=.*[^A-Za-z\d])`来匹配是否包含至少一个符号。其中`[^A-Za-z\d]`表示匹配任意非字母和非数字的符号。
综上所述,我们可以使用如下的正则表达式来验证是否符合要求的密码:
`^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^A-Za-z\d]).{8,20}$`
使用这个正则表达式进行密码验证,如果返回匹配成功,则说明输入的密码长度为8-20个字符,并且包含了大写字母、小写字母、数字和符号中的任意三种。
相关问题
帮忙写一个js正则,要求长度为8-20个字符,且只包含大写字母、小写字母、数字和符号四种类型中的任意三种
可以使用正则表达式的正向前瞻来实现这个需求:
```
/^(?=(.*\d){0,2})(?=(.*[a-z]){0,2})(?=(.*[A-Z]){0,2})(?=(.*[\W_]){0,2})[\d\w\W_]{8,20}$/
```
解释一下这个正则表达式的含义:
- `^` 表示匹配开头
- `(?=(.*\d){0,2})` 表示正向前瞻,要求后面跟着的字符串中包含 0 到 2 个数字
- `(?=(.*[a-z]){0,2})` 表示正向前瞻,要求后面跟着的字符串中包含 0 到 2 个小写字母
- `(?=(.*[A-Z]){0,2})` 表示正向前瞻,要求后面跟着的字符串中包含 0 到 2 个大写字母
- `(?=(.*[\W_]){0,2})` 表示正向前瞻,要求后面跟着的字符串中包含 0 到 2 个符号
- `[\d\w\W_]{8,20}` 表示匹配长度为 8 到 20 的数字、字母、符号、下划线的组合
- `$` 表示匹配结尾
综合起来,这个正则表达式表示匹配长度为 8 到 20 的字符串,其中必须包含任意三种类型的字符,包括数字、大写字母、小写字母和符号。
密码长度最少8位最多20位 大写字母,小写字母,数字,特殊符号至少三种的正则
请使用以下正则表达式:
```
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d|.*[\W_])[A-Za-z\d\W_]{8,20}$
```
该正则表达式包括以下要求:
- `^` 开头
- `(?=.*[A-Z])` 至少包含一个大写字母
- `(?=.*[a-z])` 至少包含一个小写字母
- `(?=.*\d|.*[\W_])` 至少包含一个数字或者特殊符号
- `[A-Za-z\d\W_]{8,20}` 仅包含大写字母、小写字母、数字和特殊符号,长度为 8 到 20 个字符
- `$` 结尾
可以使用该正则表达式来验证密码是否符合要求。