老师我这段代码怎么没办法判断密码强度,怎么都是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]+$)排除非全字母和数字组成 ... 后面类似 . 我们把所有错误的情况都排除掉 ,最后就是正确的情况了 .

另外,作业的密码强度,老师给你一个整体的参考:

同学自己多看几遍,别着急,正则这一块内容确实不那么容易理解,静下心按照老师讲解的多理解理解哦。
祝学习愉快 ,望采纳。
相似问题