@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! 这居然可以,我不知哪里错了什么
我后来修改,看看文档,现在算是完成此种校验了,但是感觉是笨办法,我的正则太长(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,}$/
) 这种看上去都晕乎了,好在我有耐心,呼呼~~ 不知可有什么优化的地方######楼主屌!
######为什么一定要用正则呢?或者说为什么一定要用一个正则呢?######
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null
用的正则种类多了,时常脑抽。
/^(.{19,}|.{0,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) === null
/^(.{19,}|.{,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) !== null
用的正则种类多了,时常脑抽。
/^(.{19,}|.{0,6}|[a-zA-Z]+|[a-z0-9]+|[A-Z0-9]+|[^a-zA-Z]+|[^a-z0-9]+|[^A-Z0-9]+)$/.exec(password) === null
1. 首先,我作为用户,觉得这个规则太变态了,我哪记得那么复杂的密码。
2. 然后,非要用正则表达式吗?用if判断不是更简单,而且代码可读性更好?
######同意,多写几个if判断的事情。不然以后代码维护起来要搞死人。######1. 首先,我作为用户,觉得这个规则太变态了,我哪记得那么复杂的密码。
2. 然后,非要用正则表达式吗?用if判断不是更简单,而且代码可读性更好?
1 说的好,我也没办法啊,这个修改密码是要存储到LDAP 中去,ldap的密码要求复杂度就是这样,否则修改不会成功的
2 我刚开始就先想到的是正则,所以在这上面花了时间去研究了下,所以才想要个结果,以后遇到简单一点的就很容易了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。