关于js 密码正则表达式

小马奔腾123 发布于 2015/02/09 14:57
阅读 1K+
收藏 2

@abian 你好,想跟你请教个问题:又来请教你问题了,近来在做密码系统,关于修改密码人家提出需要复杂度符合:(新密码须符合:密码长度介于7到18位,其中至少包含有大写和小写字母,数字,特殊字符四种中的任意三种组合!)

测试发现我的正则有问题:reg = /^[a-zA-Z]{1,}[0-9]{1,}[^a-zA-Z0-9]{1,}|[a-zA-Z]{1,}[^a-zA-Z0-9]{1,}[0-9]{1,}|[0-9]{1,}[a-zA-Z]{1,}[^a-zA-Z0-9]{1,}|[0-9]{1,}[^a-zA-Z0-9]{1,}[a-zA-Z]{1,}|[^a-zA-Z0-9]{1,}[a-zA-Z]{1,}[0-9]{1,}|[^a-zA-Z0-9]{1,}[0-9]{1,}[a-zA-Z]{1,}$/

这个我用Qwert123  提示不符合     我在后面输Qwert123! 这居然可以,我不知哪里错了什么

加载中
1
小马奔腾123
小马奔腾123
我后来修改,看看文档,现在算是完成此种校验了,但是感觉是笨办法,我的正则太长(reg = /^[A-Z]{0,}[a-z]{1,}[0-9]{1,}[^a-zA-Z0-9]{1,}|[A-Z]{0,}[a-z]{1,}[^a-zA-Z0-9]{1,}[0-9]{1,}|[A-Z]{0,}[0-9]{1,}[a-z]{1,}[^a-zA-Z0-9]{1,}|[A-Z]{0,}[0-9]{1,}[^a-zA-Z0-9]{1,}[a-z]{1,}|[A-Z]{0,}[^a-zA-Z0-9]{1,}[a-z]{1,}[0-9]{1,}|[A-Z]{0,}[^a-zA-Z0-9]{1,}[0-9]{1,}[a-z]{1,}|  
[a-z]{0,}[A-Z]{1,}[0-9]{1,}[^a-zA-Z0-9]{1,}|[a-z]{0,}[A-Z]{1,}[^a-zA-Z0-9]{1,}[0-9]{1,}|[a-z]{0,}[0-9]{1,}[A-Z]{1,}[^a-zA-Z0-9]{1,}|[a-z]{0,}[0-9]{1,}[^a-zA-Z0-9]{1,}[A-Z]{1,}|[a-z]{0,}[^a-zA-Z0-9]{1,}[0-9]{1,}[A-Z]{1,}|[a-z]{0,}[^a-zA-Z0-9]{1,}[A-Z]{1,}[0-9]{1,}|          
[0-9]{0,}[A-Z]{1,}[a-z]{1,}[^a-zA-Z0-9]{1,}|[0-9]{0,}[A-Z]{1,}[^a-zA-Z0-9]{1,}[a-z]{1,}|[0-9]{0,}[a-z]{1,}[^a-zA-Z0-9]{1,}[A-Z]{1,}|[0-9]{0,}[a-z]{1,}[A-Z]{1,}[^a-zA-Z0-9]{1,}|[0-9]{0,}[^a-zA-Z0-9]{1,}[a-z]{1,}[A-Z]{1,}|[0-9]{0,}[^a-zA-Z0-9]{1,}[A-Z]{1,}[a-z]{1,}|                         
[^a-zA-Z0-9]{0,}[A-Z]{1,}[a-z]{1,}[0-9]{1,}|[^a-zA-Z0-9]{0,}[A-Z]{1,}[0-9]{1,}[a-z]{1,}|[^a-zA-Z0-9]{0,}[a-z]{1,}[A-Z]{1,}[0-9]{1,}|[^a-zA-Z0-9]{0,}[a-z]{1,}[0-9]{1,}[A-Z]{1,}|[^a-zA-Z0-9]{0,}[0-9]{1,}[a-z]{1,}[A-Z]{1,}|[^a-zA-Z0-9]{0,}[0-9]{1,}[A-Z]{1,}[a-z]{1,}$/
)  这种看上去都晕乎了,好在我有耐心,呼呼~~  不知可有什么优化的地方
0
纠结名字
为什么一定要用正则呢?或者说为什么一定要用一个正则呢?
0
m
magiclogy
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null



换种姿势
0
小马奔腾123
小马奔腾123

引用来自“magiclogy”的评论

/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null



换种姿势
你这我试过  不行,不满足条件
m
magiclogy
好吧,应该是===null
0
小马奔腾123
小马奔腾123

引用来自“magiclogy”的评论

/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null



换种姿势

引用来自“小马奔腾123”的评论

你这我试过  不行,不满足条件
哥,你确定试过你这个可以么?我试过是不行的
0
m
magiclogy

引用来自“magiclogy”的评论

/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null



换种姿势

引用来自“小马奔腾123”的评论

你这我试过  不行,不满足条件

引用来自“小马奔腾123”的评论

哥,你确定试过你这个可以么?我试过是不行的

用的正则种类多了,时常脑抽。

/^(.{19,}|.{0,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) === null



0
小马奔腾123
小马奔腾123

引用来自“magiclogy”的评论

/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null



换种姿势

引用来自“小马奔腾123”的评论

你这我试过  不行,不满足条件

引用来自“小马奔腾123”的评论

哥,你确定试过你这个可以么?我试过是不行的

引用来自“magiclogy”的评论

用的正则种类多了,时常脑抽。

/^(.{19,}|.{0,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) === null



真不行啊
0
MyronLee
MyronLee

1. 首先,我作为用户,觉得这个规则太变态了,我哪记得那么复杂的密码。

2. 然后,非要用正则表达式吗?用if判断不是更简单,而且代码可读性更好?

Canrz
Canrz
同意,多写几个if判断的事情。不然以后代码维护起来要搞死人。
0
小马奔腾123
小马奔腾123

引用来自“MyronLee”的评论

1. 首先,我作为用户,觉得这个规则太变态了,我哪记得那么复杂的密码。

2. 然后,非要用正则表达式吗?用if判断不是更简单,而且代码可读性更好?

1 说的好,我也没办法啊,这个修改密码是要存储到LDAP 中去,ldap的密码要求复杂度就是这样,否则修改不会成功的

2 我刚开始就先想到的是正则,所以在这上面花了时间去研究了下,所以才想要个结果,以后遇到简单一点的就很容易了

返回顶部
顶部