老师在问答里给的验证密码的正则

老师在问答里给的验证密码的正则

<script>
    var str1="312345";
    var str2="aabbcc";
    var str3="###$$%%";
    var str4="1a23##$%%";

    var reg1=/^[0-9|a-z]{6,20}$/i;
    var reg2=/^[\W|a-z]{6,20}$/i;
    var reg3=/^[\W|0-9]{6,20}$/i;
    var reg_all=/^\W[a-zA-Z0-9]*$/;
    console.log(reg1.test(str1));
    console.log(reg2.test(str2));
    console.log(reg3.test(str3));
    console.log(reg_all.test(str4));
    console.log(reg_all.test(str3));
    console.log(reg_all.test(str2));
    console.log(reg_all.test(str1));

</script>

https://class.imooc.com/course/qadetail/139746
老师在问答里给的验证密码的正则我测试了一下怎么不行呢。我看了很多其他的问答下面老师也都是用的这个正则。是我哪里打错了么?

reg1,2,3是两种结合的正则,但是单一组合也都通过了。

reg4是三种结合的正则,但是str4却通不过。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

因为正则中用的是|,匹配一种或者两种都是可以的。

这样写是因为前面已经经过筛选了,给你举个例子:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <input type="text" id="pass">
    <span id="tip"></span>
    <script>
    var pass = document.getElementById('pass');
    var tip = document.getElementById('tip');
    pass.onblur = function() {
        var value = this.value;
        var reg = /\S{6,20}/;
        if (!reg.test(value)) {
            tip.innerHTML = '6-20个字符';
        } else {
            if (/^[1-9]{6,20}$/.test(value) || /^[a-zA-Z]{6,20}$/.test(value) || /^\W{6,20}$/.test(value)) {
                tip.innerHTML = '密码强度弱';

            } else if (/^[1-9|a-z]{6,20}$/.test(value) || /^[\W|a-z]{6,20}$/.test(value) || /^[\W|1-9]{6,20}$/.test(value)) {
                tip.innerHTML = '密码强度一般';

            } else if (/\W[0-9a-zA-Z]*/.test(value)) {
                tip.innerHTML = '密码强度强';

            }
        }
    }
    </script>
</body>

</html>

要结合整体代码去看,不要只测试一个正则哦。

自己再测试下。

好帮手慕星星 2019-10-10 10:20:25

同学你好,

第四个正则中不需要加^和$,如果加上了就必须按照正则的顺序来,所以不需要添加:

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

可以重新测试下,祝学习愉快!

  • 提问者 weixin_慕雪558436 #1
    前三个正则老师说是验证2个组合的,但是单一数字、字符或者字母也都能通过验证是为什么呢。 另,第四个正则不需要判断字符长度么
    2019-10-10 10:24:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师