老师我这段代码怎么没办法判断密码强度,怎么都是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回答

好帮手慕夭夭

2019-04-14

你好同学,解答如下:

http://img1.sycdn.imooc.com/climg/5cb2da5a0001ce5e05960044.jpg

如上的规则是匹配数字或者字母或者非任何数字字母,也就是str中包含其他的任何一种情况都会匹配成功,所以不管你写字母或者数字或者是符号或者任意它们的组合,返回的都是true.

如果想要实现作业中,不能使用或了,例如密码为强的规则,应该让字符串str必须包含数字字母和其它符号,可以参考如下:

http://img1.sycdn.imooc.com/climg/5cb2db930001970812010090.jpg

这个可能看起来有点复杂,老师帮助你分析一下:

首先看如下的红框的内容是为了匹配字符的 , 因为使用\W里面也是包含数字的 ,这样当你输入字母和数组两种组合的时候就已经能够验证成功 ,显然不对 .所以我们把可能输入的一些字符的情况都列举上 .

http://img1.sycdn.imooc.com/climg/5cb2ddf200014d5613090075.jpg

字母数字和字符的表示就是如下:

http://img1.sycdn.imooc.com/climg/5cb2dc5400010a2c05480043.jpg

但是单纯靠如上正则的话 , 只能保证密码是字母数字字符串组成,但是无法保证3种都有 . 所以为了优化这个问题 ,所有不符合的情况依次排除 

(?![a-zA-Z]+$) 开头这个就是先排除密码不是纯字母 , (?!\d+$)紧接着这个排除非全数字(?![`~!@#$%^&*()_+<>?:"{},.\/;'[\]]+$)排除非全字符串 . (?![a-zA-Z\d]+$)排除非全字母和数字组成 ... 后面类似  . 我们把所有错误的情况都排除掉 ,最后就是正确的情况了 .

http://img1.sycdn.imooc.com/climg/5cb2dcca0001589515070062.jpg

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

http://img1.sycdn.imooc.com/climg/5cb2e0070001d4e412560350.jpg

同学自己多看几遍,别着急,正则这一块内容确实不那么容易理解,静下心按照老师讲解的多理解理解哦。

祝学习愉快 ,望采纳。

0

0 学习 · 14456 问题

查看课程