关于密码的正则表达式

问题遇到的现象和发生背景

三个关于密码的正则表达式,
8-32个字符,至少2种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)
10-32个字符,至少3种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&
+.)
12-32个字符,至少4种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&*+.)

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

已通过在线测试,先上结果,后有分解说明:

  1. 8-32个字符,至少2种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)
    ^(?![A-Z]+$)(?![a-z]+$)(?![0-9]+$)(?![-!@#$^&+.]+$)[\w-!@#$^&+.]{8,32}$
  2. 10-32个字符,至少3种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)
    ^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z-!@#$^&+.]+$)(?![a-z0-9]+$)(?![a-z-!@#$^&+.]+$)(?![0-9-!@#$^&+.]+$)[\w-!@#$^&+.]{10,32}$
  3. 12-32个字符,至少4种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&*+.)
    ^(?![\w]+$)(?![a-z0-9-!@#$^&+.]+$)(?![A-Za-z-!@#$^&+.]+$)(?![A-Z0-9-!@#$^&+.]+$)[\w-!@#$^&+.]{12,32}$

说明:以下解释的是3的,1 、2和3可以类比,比如1的排除仅包含一种的就可以了,2 的排除包含一种和二种的就可以了
1)^匹配开头
  2)(?![\w]+$)匹配后面不全是(大写字母或小写字母或数字)的位置,排除了(大写字母、小写字母、数字)的1种2种3种组合
  3)(?![a-z0-9-!@#$^&+.]+$)排除了(小写字母、数字、特殊符号)的1种2种3种组合
  4)(?![A-Za-z-!@#$^&+.]+$)排除了(大写字母、小写字母、特殊符号)的1种2种3种组合
  5)(?![A-Z0-9-!@#$^&+.]+$)排除了(大写字母、数组、特殊符号)的1种2种3种组合
  6)[a-zA-Z0-9-!@#$^&+.]匹配(小写字母或大写字母或数字或特殊符号)因为排除了上面的组合,所以就只剩下了4种都包含的组合了
  7){12,32}8位以上
  8)$匹配字符串结尾

^(?![\d]+$)(?![a-zA-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z-!@#$^&+.]{8,32}$
或者
/(?!.*\s)(?!^[\u4e00-\u9fa5]+$)(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)[\da-zA-Z-!@#$^&+.]{8,32}$/
/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z,.:;,。?''"";;‘’“”·、_~!@#$^&*()<>{}【】|?\/+=-]+$)(?![a-z0-9]+$)(?![a-z,.:;,。?''"";;‘’“”_~!@#$^&*()<>{}【】|?/+=-]+$)(?![0-9,.:;,。?''"";;‘’“”_~!@#$^&*()<>{}【】|?/+=-]+$)[\da-zA-Z-!@#$^&+.]{10,32}$/

3.

^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[\da-zA-Z-!@#$^&+.]{12,32}$

2.


^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_-!@#$^&+.]+$)(?![a-z0-9]+$)(?![a-z\\W_-!@#$^&+.]+$)(?![0-9\\W_-!@#$^&+.]+$)[a-zA-Z0-9\\W_-!@#$^&+.]{10,32}$

3、

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[-!@#$^&+.]).{12,32}$/

8-32个字符,至少2种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)

^(?![\d]+$)(?![a-zA-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z-!@#$^&+.]{8,32}$

10-32个字符,至少3种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)

^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{10,32}$

12-32个字符,至少4种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&*+.)

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~@#$%\*-\+=:,\\?\[\]\{}]).{12,32}$
 

这里有一篇关于正则表达式的文章,内容正好符合楼主要求,建议楼主学习一下,毕竟只知道结果不知道过程也不是什么好事:
https://wenku.baidu.com/view/e3d352f51a5f312b3169a45177232f60ddcce7a2.html

第一问:8-32个字符,至少2种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)
^(?![\d]+$)(?![a-z]+$)(?![A-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z-!@#$^&+.]{8,32}$

解析:

img

测试:

img

第二问:10-32个字符,至少3种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&+.)
^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z-!@#$^&+.]+$)(?![a-z0-9]+$)(?![a-z-!@#$^&+.]+$)(?![0-9-!@#$^&+.]+$)[a-zA-Z0-9-!@#$^&+.]{10,32}

解析:

img

测试:

img

第三问:12-32个字符,至少4种字符组合,不含空格(大写字母、小写字母、数字和标点符号,支持的标点符号包括-!@#$^&*+.)
^(?![a-zA-Z0-9]+$)(?![a-zA-Z-!@#$^&*+.]+$)(?![a-z0-9-!@#$^&*+.]+$)(?![0-9A-Z-!@#$^&*+.]+$)[a-zA-Z0-9-!@#$^&*+.]{12,32}

解析:

img

测试:

img