老师我这段代码怎么没办法判断密码强度,怎么都是true
来源:3-10 作业题
CC陈十一
2019-04-14 13:35:56
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> var reg3=/^[\W\w]{6,20}$/, reg2=/^[\da-zA-Z]{6,20}||\D{6,20}||[\wa-zA-Z]$/, reg1=/^\d{6,20}$||^[a-zA-Z]{6,20}$||^\W{6,20}$/, str='cjc1234325.'; console.log(reg1.test(str)); </script> </body> </html>
1回答
你好同学,解答如下:
如上的规则是匹配数字或者字母或者非任何数字字母,也就是str中包含其他的任何一种情况都会匹配成功,所以不管你写字母或者数字或者是符号或者任意它们的组合,返回的都是true.
如果想要实现作业中,不能使用或了,例如密码为强的规则,应该让字符串str必须包含数字字母和其它符号,可以参考如下:
这个可能看起来有点复杂,老师帮助你分析一下:
首先看如下的红框的内容是为了匹配字符的 , 因为使用\W里面也是包含数字的 ,这样当你输入字母和数组两种组合的时候就已经能够验证成功 ,显然不对 .所以我们把可能输入的一些字符的情况都列举上 .
字母数字和字符的表示就是如下:
但是单纯靠如上正则的话 , 只能保证密码是字母数字字符串组成,但是无法保证3种都有 . 所以为了优化这个问题 ,所有不符合的情况依次排除
(?![a-zA-Z]+$) 开头这个就是先排除密码不是纯字母 , (?!\d+$)紧接着这个排除非全数字(?![`~!@#$%^&*()_+<>?:"{},.\/;'[\]]+$)排除非全字符串 . (?![a-zA-Z\d]+$)排除非全字母和数字组成 ... 后面类似 . 我们把所有错误的情况都排除掉 ,最后就是正确的情况了 .
另外,作业的密码强度,老师给你一个整体的参考:
同学自己多看几遍,别着急,正则这一块内容确实不那么容易理解,静下心按照老师讲解的多理解理解哦。
祝学习愉快 ,望采纳。
相似问题