84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
要求:必须同时包含 大写字母,小写字母,数字,特殊符号四个条件中的3个而且长度至少8位即可通过;
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
正则实现不了『四个条件中的3个』,分开判断吧
if(len
为什么一定追求正则呢?直接用代码不就可以轻松实现了吗?4个条件每符合一个计数+1,累计值>=3则通过,长度更可以入口就判断了
PS:正则表达式讲究顺序的,而你要求的4种至少含三种是无序的,那么就需要把可能的组合列出来,比如先大写后小写再数字或者先数字再字母等等,麻烦不说,还大大降低代码可读性
如果非要正则的话这里提供一个参考:(必须同时存在大小写字母)
[A-Za-z]*([A-Z][a-z]|[a-z][A-Z])[A-Za-z]
题主应该是做密码强度匹配吧。
这和正则关系不大。
方案
分开匹配,匹配大写字母,匹配小写字母,匹配数字,匹配特殊字符。
设置flag变量,表示匹配成功的次数。if判断,匹配了给flag加1,最后判断是否>=3即可。
也可以有函数式写法,更简洁,但原理相同。
我js不熟,说到这应该很容易实现。一定要正则一次完成,比较复杂,还要用很多高级语法,回头查一下。
希望你的逻辑校验放在后端,前端的话,用户是可以不起用js的。
我觉得这种需求更直观的应该用js来做,我写了一个简单的示例你可以参考一下。
function check(str){ var n = 0; // 首先从长度判断 if(str.length = 3; }
正则实现不了『四个条件中的3个』,分开判断吧
为什么一定追求正则呢?直接用代码不就可以轻松实现了吗?4个条件每符合一个计数+1,累计值>=3则通过,长度更可以入口就判断了
PS:正则表达式讲究顺序的,而你要求的4种至少含三种是无序的,那么就需要把可能的组合列出来,比如先大写后小写再数字或者先数字再字母等等,麻烦不说,还大大降低代码可读性
如果非要正则的话这里提供一个参考:(必须同时存在大小写字母)
题主应该是做密码强度匹配吧。
这和正则关系不大。
方案
分开匹配,匹配大写字母,匹配小写字母,匹配数字,匹配特殊字符。
设置flag变量,表示匹配成功的次数。if判断,匹配了给flag加1,最后判断是否>=3即可。
也可以有函数式写法,更简洁,但原理相同。
我js不熟,说到这应该很容易实现。一定要正则一次完成,比较复杂,还要用很多高级语法,回头查一下。
希望你的逻辑校验放在后端,前端的话,用户是可以不起用js的。
我觉得这种需求更直观的应该用js来做,我写了一个简单的示例你可以参考一下。