HTML中用户名、身份证号、邮箱、出生日期等的格式验证【亲测】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单验证</title>
//为了使页面不是那么突兀,特地导入了这俩个bootstrap框架相关的包
    <link rel="stylesheet" type="text/css" href="css/bootstrap-3.3.7-dist/css/bootstrap.css"/>
    <link rel="stylesheet" type="text/css" href="css/bootstrap-3.3.7-dist/js/bootstrap.js"/>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 "></div>
        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 ">
            <h3 style="font-family: youyuan;color: blue;text-align: center"><strong>表单验证</strong></h3>
            <hr/>
            <form name="form">
                <span style="color: blue">用户名</span>
                <input type="text" id="name" name="name" required="required" class="form-control" placeholder="用户名(6-14位)"/>
                <span id="namespan" style="color: red"></span>
                <br/>
                <span style="color: blue">密码</span>
                <input type="password" id="pwd"name="pwd" required="required" class="form-control"onclick="checkname()" placeholder="密码(4-16位)"/>
                <span id="pwdspan"style="color: red"></span>
                <br/>
                <span style="color: blue">确认密码</span>
                <input type="password" id="repwd"name="repwd" required="required" class="form-control"onclick="checkpassword()" placeholder="确认密码"/>
                <span id="repwdspan"style="color: red"></span>
                <br/>
                <span style="color: blue">邮箱</span>
                <input type="email" id="email" required="required" class="form-control"onclick="same()" placeholder="邮箱"/>
                <span id="emailspan" style="color: red"></span>
                <br/>
                <span style="color: blue">身份证号</span>
                <input type="text"name="number" id="id" required="required" class="form-control"onclick="checkemail()" placeholder="身份证号"/>
                <span id="idspan" style="color: red"></span>
                <br/>
                <span style="color: blue">出生日期</span>
                <input name="sDate" type="text" id="sDate" required="required" class="form-control"onclick="check(form)" placeholder="出生日期"/>
                <span id="datespan" style="color: red"></span>
                <br/>
                <input type="button" value="检查出生日期" class="btn btn-primary"onclick="checkdate(form)"/>
                <input type="reset" value="重置" class="btn btn-primary"/>
                <input type="submit" value="提交" class="btn btn-primary"/>
            </form>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 ">
        </div>
    </div>
</div>
</body>
</html>
<script language="javascript">
    //检验用户名格式
    function checkname(){
        var name1 = document.form.name.value;
        if (name1 == "") {
            document.getElementById("namespan").innerHTML = "用户名不能为空!";
            document.form.name.focus();
            return false;
        }
        if (name1.length < 6 || name1.length > 14) {
            document.getElementById("namespan").innerHTML = "格式错误,长度6-14个字符";
            document.form.name.focus();
            // document.form.name.select();
            return false;
        }
        var charname1 = name1.toLowerCase();
        for (var i = 0; i < name1.length; i++) {
            var charname = charname1.charAt(i);
            if (!(charname >= 0 && charname <= 9) && (!(charname >= 'a' && charname <= 'z')) && (charname != '_')) {
                document.getElementById("namespan").innerHTML  = "用户名包含非法字符";
                // document.form.name.select();
                document.form.name.focus();
                return false;
            }
        }
        document.getElementById("namespan").innerHTML  = "用户名正确";
        return true;
    }

    //检查密码格式
        function checkpassword(){
            var div = document.getElementById("pwdspan");
            div.innerHTML = "";
            var password = document.form.pwd.value;
            if (password == "") {
                div.innerHTML = "密码不能为空";
                document.form.pwd.focus();
                return false;
            }
            if (password.length < 4 || password.length > 16) {
                div.innerHTML = "格式错误,密码长度为4-16位";
                document.form.pwd.select();
                return false;
            }
            div.innerHTML = "密码格式正确";
            return true;
        }

    //检查密码是否一样
    function same() {
        var d=document.getElementById("repwdspan");
        d.innerHTML="";
        var pValue=document.getElementById("pwd").value;
        if(pValue==""){
            //注意空的表示方法
            d.innerHTML="密码不能为空";
            return false;
        }
        /** 校验确认密码*/
        var rpValue=document.getElementById("repwd").value;
        if(rpValue!=pValue){
            d.innerHTML="两次密码输入不一致";
            return false;
        }
        d.innerHTML="输入一致";
        return true;

    }

    //检验邮箱
    function checkemail() {
        var d=document.getElementById("emailspan");
        d.innerHTML="";
        var eValue=document.getElementById("email").value;
        if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(eValue)){
            d.innerHTML="邮箱格式错误!";
        }else
            d.innerHTML="邮箱格式正确"
    }


    // 检验身份证号格式
    function checkeNO(NO){
        var str=NO;
        //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
        var Expression=/^\d{17}[\d|X]$|^\d{15}$/;
        var objExp=new RegExp(Expression);
        if(objExp.test(str)==true){
            return true;
        }else{
            return false;
        }
    }
    function check(form){
        var d=document.getElementById("idspan");
        d.innerHTML="";
        if(form.number.value==""){
            d.innerHTML="请输入身份证号码!";
            form.number.focus();return;
        }
        if(!checkeNO(form.number.value)){
            d.innerHTML="身份证号码格式错误!!";
            form.number.focus();
            return;
        }
        if(checkeNO(form.number.value)){
            d.innerHTML="身份证号码格式正确!!";
        }
    }

    //判断输入的日期是否正确
    function CheckDate(INDate){
        if (INDate==""){return true;}
        if(INDate.indexOf('-',0)!=-1){	separate="-"}
        else{
            if(INDate.indexOf('/',0)!=-1){separate="/"}
            else {return true;}
        }
        area=INDate.indexOf(separate,0)
        //获取年份
        subYY=INDate.substr(0,area)
        if(isNaN(subYY) || subYY<=0){
            return true;
        }
        //转换月份
        subMM=INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1))
        if(isNaN(subMM) || subMM<=0){
            return true;
        }
        if(subMM.length<2){subMM="0"+subMM}
        //转换日
        area=INDate.lastIndexOf(separate)
        subDD=INDate.substr(area+1,INDate.length-area-1)
        if(isNaN(subDD) || subDD<=0){
            return true;
        }
        if(eval(subDD)<10){subDD="0"+eval(subDD)}
        NewDate=subYY+"-"+subMM+"-"+subDD
        if(NewDate.length!=10){return true;}
        if(NewDate.substr(4,1)!="-"){return true;}
        if(NewDate.substr(7,1)!="-"){return true;}
        var MM=NewDate.substr(5,2);
        var DD=NewDate.substr(8,2);
        if((subYY%4==0 && subYY%100!=0)||subYY%400==0){ //判断是否为闰年
            if(parseInt(MM)==2){
                if(DD>29){return true;}
            }
        }else{
            if(parseInt(MM)==2){
                if(DD>28){return true;}
            }
        }
        var mm=new Array(1,3,5,7,8,10,12); //判断每月中的最大天数
        for(i=0;i< mm.length;i++){
            if (parseInt(MM) == mm[i]){
                if(parseInt(DD)>31){
                    return true;
                }else{
                    return false;
                }
            }
        }
        if(parseInt(DD)>30){return true;}
        if(parseInt(MM)>12){return true;}
        return false;
    }
function checkdate(myform){
        var d=document.getElementById("datespan");
        d.innerHTML="";
    if(myform.sDate.value==""){
        d.innerHTML="请输入日期";
        myform.sDate.focus();return;
    }
    if(CheckDate(myform.sDate.value)){
        d.innerHTML="您输入的日期不正确!\n 请注意日期格式(如:2007/07/17或2007-07-17)以及二月是否为闰年!";
        myform.sDate.focus();return;
    }
    if(!CheckDate(myform.sDate.value)){
        d.innerHTML="您输入的日期是正确的";
    }
}
</script>

 

  • 16
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
html+JavaScript架构 可以用在.asp .php .jsp的用户注册页面 功能如下: 1.可以验证用户密码的安全级别并返回安全级别的等级 全部数字安全级别为低 数字+字母安全级别为 数字+大小写字母安全级别为最高 并且密码不能为全角 或者特殊符号等 如果修改功能请修改 js下的passwordstrength.js 2.姓名验证 验证国人的姓名 3.身份证验证根据用户提供的身份证信判断出省市,然后在判断....做到只能输入 正确的省份证信息才可以.... 判断身份证的方法比使用正则表达式更加准确详细请看 js的 checkidcard.js 判断省份证的 js function checkIsChinese(str){ if (str.length < 2 || str.length > 15){ return "姓名长度不正确"; } var ret=true; for(var i=0;i<str.length;i++){ ret=ret && (str.charCodeAt(i)>=10000); } if (ret){ return "true"; } else{ return "请输入文"; } } //www.jsphelp.com function parseIdCard(val) { var birthdayValue; var sexId; var sexText; if (15 == val.length) //15位身份证号码 { birthdayValue = val.charAt(6) + val.charAt(7); if (parseInt(birthdayValue) < 10) { birthdayValue = '20' + birthdayValue; } else { birthdayValue = '19' + birthdayValue; } birthdayValue = birthdayValue + '-' + val.charAt(8) + val.charAt(9) + '-' + val.charAt(10) + val.charAt(11); if (parseInt(val.charAt(14) / 2) * 2 != val.charAt(14)) { sexId = "1"; sexText = "男"; } else { sexId = "2"; sexText = "女"; } } if (18 == val.length) { //18位身份证号码 birthdayValue = val.charAt(6) + val.charAt(7) + val.charAt(8) + val.charAt(9) + '-' + val.charAt(10) + val.charAt(11) + '-' + val.charAt(12) + val.charAt(13); if (parseInt(val.charAt(16) / 2) * 2 != val.charAt(16)) { sexId = "1"; sexText = "男"; } else { sexId = "2"; sexText = "女"; } } //年龄 var dt1 = new Date(birthdayValue.replace("-", "/")); var dt2 = new Date(); var age = dt2.getFullYear() - dt1.getFullYear(); var m = dt2.getMonth() - dt1.getMonth(); if (m < 0) age--; return new Array(birthdayValue, sexId, sexText, age); } function checkIdcard(idcard){ idcard = idcard.toUpperCase(); var Errors=new Array("true","身份证号码位数不对!","身份证号出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证号地区编码不正确!"); var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} var idcard,Y,JYM; var S,M; var idcard_array = new Array(); idcard_array = idcard.split(""); if(idcard.length != 15 && idcard.length != 18) return Errors[1]; //if(idcard.length != 18) return Errors[1]; if (idcard.substr(0,6) == "000000" || idcard.substr(0,6) == "111111" || idcard.substr(0,6) == "222222" || idcard.substr(0,6) == "333333" || idcard.substr(0,6) == "444444" || idcard.substr(0,6) == "555555" || idcard.substr(0,6) == "666666" || idcard.substr(0,6) == "777777" || idcard.substr(0,6) == "888888" || idcard.substr(0,6) == "999999") return Errors[4]; if (idcard.substr(0,6) == "123456" || idcard.substr(0,6) == "234567" || idcard.substr(0,6) == "345678" || idcard.substr(0,6) == "456789" || idcard.substr(0,6) == "567890" || idcard.substr(0,6) == "012345" || idcard.substr(0,6) == "543210" || idcard.substr(0,6) == "432109" || idcard.substr(0,6) == "321098" || idcard.substr(0,6) == "210987" || idcard.substr(0,6) == "109876" || idcard.substr(0,6) == "098765" || idcard.substr(0,6) == "987654" || idcard.substr(0,6) == "876543" || idcard.substr(0,6) == "765432") return Errors[4]; if (idcard.substr(0,6) == "121212" || idcard.substr(0,6) == "131313" || idcard.substr(0,6) == "141414" || idcard.substr(0,6) == "151515" || idcard.substr(0,6) == "161616" || idcard.substr(0,6) == "171717" || idcard.substr(0,6) == "181818" || idcard.substr(0,6) == "191919" || idcard.substr(0,6) == "101010") return Errors[4]; if (idcard.substr(0,6) == "212121" || idcard.substr(0,6) == "232323" || idcard.substr(0,6) == "242424" || idcard.substr(0,6) == "252525" || idcard.substr(0,6) == "262626" || idcard.substr(0,6) == "272727" || idcard.substr(0,6) == "282828" || idcard.substr(0,6) == "292929" || idcard.substr(0,6) == "202020") return Errors[4]; if (idcard.substr(0,6) == "313131" || idcard.substr(0,6) == "323232" || idcard.substr(0,6) == "343434" || idcard.substr(0,6) == "353535" || idcard.substr(0,6) == "363636" || idcard.substr(0,6) == "373737" || idcard.substr(0,6) == "383838" || idcard.substr(0,6) == "393939" || idcard.substr(0,6) == "303030") return Errors[4]; if (idcard.substr(0,6) == "414141" || idcard.substr(0,6) == "424242" || idcard.substr(0,6) == "434343" || idcard.substr(0,6) == "454545" || idcard.substr(0,6) == "464646" || idcard.substr(0,6) == "474747" || idcard.substr(0,6) == "484848" || idcard.substr(0,6) == "494949" || idcard.substr(0,6) == "404040") return Errors[4]; if (idcard.substr(0,6) == "515151" || idcard.substr(0,6) == "525252" || idcard.substr(0,6) == "535353" || idcard.substr(0,6) == "545454" || idcard.substr(0,6) == "565656" || idcard.substr(0,6) == "575757" || idcard.substr(0,6) == "585858" || idcard.substr(0,6) == "595959" || idcard.substr(0,6) == "505050") return Errors[4]; if (idcard.substr(0,6) == "616161" || idcard.substr(0,6) == "626262" || idcard.substr(0,6) == "636363" || idcard.substr(0,6) == "646464" || idcard.substr(0,6) == "656565" || idcard.substr(0,6) == "676767" || idcard.substr(0,6) == "686868" || idcard.substr(0,6) == "696969" || idcard.substr(0,6) == "606060") return Errors[4]; if (idcard.substr(0,6) == "717171" || idcard.substr(0,6) == "727272" || idcard.substr(0,6) == "737373" || idcard.substr(0,6) == "747474" || idcard.substr(0,6) == "757575" || idcard.substr(0,6) == "767676" || idcard.substr(0,6) == "787878" || idcard.substr(0,6) == "797979" || idcard.substr(0,6) == "707070") return Errors[4]; if (idcard.substr(0,6) == "818181" || idcard.substr(0,6) == "828282" || idcard.substr(0,6) == "838383" || idcard.substr(0,6) == "848484" || idcard.substr(0,6) == "858585" || idcard.substr(0,6) == "868686" || idcard.substr(0,6) == "878787" || idcard.substr(0,6) == "898989" || idcard.substr(0,6) == "808080") return Errors[4]; if (idcard.substr(0,6) == "919191" || idcard.substr(0,6) == "929292" || idcard.substr(0,6) == "939393" || idcard.substr(0,6) == "949494" || idcard.substr(0,6) == "959595" || idcard.substr(0,6) == "969696" || idcard.substr(0,6) == "979797" || idcard.substr(0,6) == "989898" || idcard.substr(0,6) == "909090") return Errors[4]; if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; switch(idcard.length){ case 15: if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 } else{ ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 } if(ereg.test(idcard)) return Errors[0]; else return Errors[2]; break; case 18: if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 } else{ ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 } if(ereg.test(idcard)){ S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ; Y = S % 11; M = "F"; JYM = "10X98765432"; M = JYM.substr(Y,1); if(M == idcard_array[17]) return Errors[0]; else return Errors[3]; } else return Errors[2]; break; default: return Errors[1]; break; } } function checkTwID(id){ //建立字母分数数组(A~Z) var city = new Array( 1,10,19,28,37,46,55,64,39,73,82, 2,11, 20,48,29,38,47,56,65,74,83,21, 3,12,30 ) id = id.toUpperCase(); // 使用「正规表达式」检验格式 if (id.search(/^[A-Z](1|2)\d{8}$/i) == -1) { return "身份证号格式不对!"; } else { //将字符串分割为数组(IE必需这么做才不会出错) id = id.split(''); //计算总分 var total = city[id[0].charCodeAt(0)-65]; for(var i=1; i<=8; i++){ total += eval(id[i]) * (9 - i); } //补上检查码(最后一码) total += eval(id[9]); //检查比对码(余数应为0); if (total%10 == 0) { return "true"; } else { return "身份证号格式不对!"; } } }
好的,以下是示例代码: ```html <!DOCTYPE html> <html> <head> <title>个人信息表单</title> <meta charset="UTF-8"> </head> <body> <h2>个人信息表单</h2> <form action="submit.php" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username" required minlength="6" maxlength="12" pattern="^[a-zA-Z][a-zA-Z0-9_]{5,11}$"><br> <label for="password">密码:</label> <input type="password" id="password" name="password" required minlength="8" maxlength="16" pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#\$%\^&\*])(?!.*\s).*$"><br> <label for="birthdate">出生日期:</label> <input type="date" id="birthdate" name="birthdate" required max="<?php echo date('Y-m-d', strtotime('-18 years')); ?>"><br> <label for="idcard">身份证号码:</label> <input type="text" id="idcard" name="idcard" required pattern="^\d{17}[\dXx]$"><br> <label for="phone">手机号码:</label> <input type="tel" id="phone" name="phone" required pattern="^1[3456789]\d{9}$"><br> <label for="email">电子邮件地址:</label> <input type="email" id="email" name="email" required><br> <label for="height">身高:</label> <input type="number" id="height" name="height" min="100" max="220" step="0.01" required><br> <label for="weight">体重:</label> <input type="number" id="weight" name="weight" min="30" max="200" step="0.01" required><br> <input type="submit" value="提交"> </form> </body> </html> ``` 上面的代码,我们使用了 HTML5 提供的新类型 input 元素和新增属性,包括: - `type="text"`:用于输入文本内容的文本框。 - `type="password"`:用于输入密码的文本框,输入内容会被隐藏。 - `type="date"`:用于输入日期的文本框,支持日期选择器。 - `type="tel"`:用于输入电话号码的文本框,支持电话号码格式验证。 - `type="email"`:用于输入邮箱地址的文本框,支持邮箱地址格式验证。 - `type="number"`:用于输入数字的文本框,支持数字格式验证。 - `required`:表示该字段为必填项。 - `minlength` 和 `maxlength`:表示该字段的最小和最大长度。 - `pattern`:用于自定义正则表达式验证该字段的格式。 - `min` 和 `max`:用于设置该字段的最小和最大值。 - `step`:用于设置该字段的步长。 在表单的提交页面 submit.php ,可以通过 `$_POST` 超全局数组来获取表单用户输入的值。例如: ```php $username = $_POST['username']; $password = $_POST['password']; $birthdate = $_POST['birthdate']; $idcard = $_POST['idcard']; $phone = $_POST['phone']; $email = $_POST['email']; $height = $_POST['height']; $weight = $_POST['weight']; ``` 需要注意的是,用户输入的数据都是不可信的,需要进行安全过滤和验证,以防止恶意攻击和注入攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值