其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

关于密码的正则表达式

GG网络技术分享 2025-03-18 16:15 3


问题描述:

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

三个关于密码的正则表达式,
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}$

解析:

测试:

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

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

解析:

测试:

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

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

解析:

测试:

怎么写一个匹配用户密码的 JS 正则表达式?

补充 @胡金 的答案:方括号中的 '[', ']', '^', '\\' 注意转义。

标签:

提交需求或反馈

Demand feedback