测试有效的js作业之正则

  1. 表单
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span {

            color: red;
        }
    </style>
</head>

<body>
    <form action="">
        用户名<input type="text">
        <span></span><br />
        邮箱<input type="text">
        <span></span><br />
        密码<input type="text">
        <span></span><br />
        确认密码 <input type="text">
        <span></span><br />
        手机号<input type="text">
        <span></span>
        <br>
        身份证<input type="text">
        <span></span>
        <br>
        邮政编码<input type="text">
        <span></span>
        <br>
        <!-- 文件格式监测<input type="text">
        <span></span>
        <br> -->
        字符串首尾去空格。<input type="text">
        <span></span>
        <br>
        汉字<input type="text">
        <span></span>
        <br>
        最大,最小值<input type="text">
        <span></span>
        <br>
        最短,最长值<input type="text">
        <span></span>
        <br>

        <input type="button" value="提交" id="btn">
        <span></span>
        <br>

    </form>
    <script>
        /*  思路:1.先在body里建几个input表单
         2.先设定一开始未输入是不合法的
         let isUserName = false;
                 let isMail = false;
                 let isPassword = false;
                 let isConfirmPassword = false; 
         3.获取提交按钮和和输入框的选择器
         4.获取输入框的值,用正则去判断
           let str = ipts[0].value;
                     console.log(str)
                     let userNameReg = /^[a-z0-9]{1,18}$/
         5.判断测试是否通过并显示对应结果
         6.循环第四五步
         7.判断按钮能否被点击*/

        // 先设定一开始未输入是不合法的

        let isUserName = false;
        let isMail = false;
        let isPassword = false;
        let isConfirmPassword = false;
        let isTel = false;
        let isId = false;
        let isPostalcode = false;
        /* let isImg = false; */
        let isString = false;
        let isChinese = false;
        let isMin = false;
        let isLength = false;

// 获取元素
        let btn = document.querySelector('#btn');
        let ipts = document.querySelectorAll('input');


        // 用户名
        ipts[0].oninput = function () {
            //获取输入框的值 用正则去判断
            let str = this.value;
            console.log(str)
            // 只能以字母开头,6-16位数字和下划线组成
            let Reg = /^[A-z]\w{6,16}$/;
            //    判断输入框的值,假设正确,那么
            // 判断是否匹配正则的值,若配,则布尔值为true
            if (Reg.test(this.value)) {
                isUserName = true;
                //    body里的span用来显示下列的提示文字
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;'
            } else {
                isUserName = false;
                //    不对则显示下列提示
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*只能以字母开头,6-16位数字和下划线组成&nbsp;&nbsp;'
            }
            //设置用户名不能为空
            check()//效果等于isNull()
        }

        // 邮箱
        ipts[1].oninput = function () {
            //获取输入框的值 用正则去判断
            let str = this.value;
            console.log(str)
            let mailReg = /^\w+[-+.]*\w*@([a-z0-9A-Z\u2E80-\u9FFF]-?)+(\.\w{2,6})+/
            if (mailReg.test(str)) {
                // 测试通过
                isMail = true
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp'
            } else {
                // 测试不通过
                isMail = false
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*请输入规则的电子邮箱&nbsp;&nbsp'
            }
            console.log(isMail)
            check()
        }

        // 密码
        ipts[2].oninput = function () {
            //获取输入框的值 用正则去判断
            let str = this.value;
            console.log(str)
            let pdReg = /^.{6,}$/
            if (pdReg.test(str)) {
                // 测试通过
                isPassword = true
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp'
            } else {
                // 测试不通过
                isPassword = false
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*除了换行符之外的6-16位字符&nbsp;&nbsp;'
            }
            console.log(isPassword)
            check()
        }

        //  确认密码            
        ipts[3].oninput = function () {
            //获取输入框的值 用正则去判断
            let str = this.value;
            console.log(str)
            let cpdReg = /^.{6,}$/
            // 设置现在的值等于上一个密码的值
            if (cpdReg.test(str) && this.value == ipts[2].value) {
                // 测试通过
                isConfirmPassword = true
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp'
            } else {
                // 测试不通过
                isConfirmPassword = false
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*两次密码输入不一致&nbsp;&nbsp;'
            }
            console.log(isConfirmPassword)

            check()
        }

        // 手机号
        ipts[4].oninput = function () {
            let str = this.value;
            console.log(str)
            let Reg = /^1[345789]\d{9}$/;
            if (Reg.test(this.value)) {
                isTel = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
            } else {
                isTel = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*请输入有效的手机号码&nbsp;&nbsp;';
            }
            // 手机号不能为空
            check();
        };
        // 身份证号
        ipts[5].oninput = function () {
            let str = this.value;
            console.log(str)
     let Reg = /^\d{17}(\d|x)$/; 
            if (Reg.test(this.value)) {
                isId = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;格式正确&nbsp;&nbsp;';
            } else {
                isId = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;请输入有效的身份证号&nbsp;&nbsp;';
            }

            check();
        };
        // 邮政编码检测           
        ipts[6].oninput = function () {
            let str = this.value;
            console.log(str)
            let Reg = /^\d{6}$/
            if (Reg.test(this.value)) {
                isPostalcode = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;格式正确&nbsp;&nbsp;';
            } else {
                isPostalcode = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;请输入有效的邮政编码号&nbsp;&nbsp;';
            }

            check();
        };
      



        // 字符串首尾去空格。
        ipts[7].oninput = function () {
            let str = this.value;
            console.log(str)
            let Reg = /^\s+|\s+$/g;

            if (Reg.test(this.value)) {
               
                isString = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
            } else {
                isString = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;请输入有效的字符串号&nbsp;&nbsp;';
            }

            check();
        };
        /* 中文监测
unicode编码中文监测*/
        ipts[8].oninput = function () {
            let str = this.value;
            console.log(str)
            let Reg = /^[\u2E80-\u9FFF]+$/

            if (Reg.test(this.value)) {
                isChinese = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
            } else {
                isChinese = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;请输入汉字&nbsp;&nbsp;';
            }

            check();
        };
        //  最大,最小值
        ipts[9].oninput = function () {
                // this value原来是个字符串,需要转为数字
                let str = Number(this.value);
                console.log(str)
            //    在if里判断数字大于零且小于等于15
                if (str>0 && str<=15) {
                 isMin = true;
                    this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
                  
                } else {              
                    isMin = false;
                    this.nextElementSibling.innerHTML = '&nbsp;&nbsp;请输入1-15的值&nbsp;&nbsp;';
                }
                check();//效果等于isNull()   
            };
        //最大,最小长度
        ipts[10].oninput = function () {
            let str = this.value;
            console.log(str)
            let Reg = /^\d{1,6}$/
            if (Reg.test(this.value)) {
                isLength = true;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
            } else {
                isLength = false;
                this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*请输入1-6的长度值&nbsp;&nbsp;';
            }
            check();
        };
          // 文件格式监测
        /*  ipts[11].oninput = function () {
             let str = this.value;
             console.log(str)
             let Reg = /^.+\.(jpeg|png|gif|jpg)$/
             if (Reg.test(this.value)) {
                 isimg = true;
                 this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*格式正确&nbsp;&nbsp;';
             } else {
                 isimg = false;
                 this.nextElementSibling.innerHTML = '&nbsp;&nbsp;*请输入有效的文件格式证号&nbsp;&nbsp;';
             }
             check();
         }; */


        // 新建一个函数,全部输入正确可以点击提交按钮,否则不能
        function check() {
            console.log(isUserName , isMail , isPassword , isConfirmPassword ,
                isTel , isId  ,isPostalcode , isString, isChinese,isMin , isLength)
            if (isUserName && isMail && isPassword && isConfirmPassword &&
                isTel && isId && isPostalcode && isString && isChinese && isMin && isLength) {
                btn.disabled = false
                console.log(111)
            } else {
                btn.disabled = true
            }
        }
        check()



// 全部输入正确可以提交,否则不能
        /*  btn.onclick = function () {
              if (isUserName && isMail && isPassword && isConfirmPassword &&
                isTel && isId && isPostalcode && isString && isChinese && isMin && isLength)
                 {
                  console.log('可以提交注册')
               
              } else {
                  console.log('不可以提交注册')
              }
          }  */

// check()不加他会导致对应的input文本框不填也可提交




    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值