不才,求一个正则表达式
高洛峰
高洛峰 2016-11-10 16:57:08
0
4
662

要求:必须同时包含  
大写字母,小写字母,数字,特殊符号
四个条件中的3个而且长度至少8位即可通过;

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(4)
学霸

正则实现不了『四个条件中的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;
}


Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!