题主你好,
正则及测试截图如下:
文字版:
^(?=(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\\W_])|(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])|(?=.*[0-9])(?=.*[a-z])(?=.*[\\W_])|(?=.*[0-9])(?=.*[A-Z])(?=.*[\\W_])|(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W_]))[a-zA-Z0-9\\W_]{8,16}$
-----
另外我在网上看了一下,还有另一种写法:
^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,16}$
-----
总结: 这两种方法原理其实是一样的, 第一种情况是匹配所有满足条件的组合, 第二种情况是排除所有不满足条件的组合 //这里的条件指的是字符串必须含有三种以上类型的字符
=====
希望可以帮到题主, 欢迎追问.