正则表单验证

<!DOCTYPE html>
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
 
<body>
<form action="" >
  <table width="449" height="530" border="1" align='center'>
   <tr>
    <td colspan="2" align="center">用户名注册</td>
    </tr>
   <tr>
    <td width="116" align="right">姓名:</td>
    <td width="323">
      <label>
       <input type="text" name="" id="name" /><span id="s1"></span>
      </label>
    </td>
   </tr>
   <tr>
    <td width="116" align="right">性别:</td>
    <td width="323">
      <label>
       <input type="radio" name="sex" id="b" />男
       <input type="radio" name="sex" id="g" />女
       <span id="s2"></span>
      </label>
    </td>
   </tr>
   <tr>
    <td align="right">年龄:</td>
    <td><label>
     <input type="text" name="" id="age" /><span id="s3"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">密码:</td>
    <td><label>
     <input type="password" name="" id="pwd" /><span id="s4"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">确认密码:</td>
    <td><label>
     <input type="password" name="" id="qpwd" />
    </label><span id=s5></span></td>
   </tr>
   <tr>
    <td align="right">手机:</td>
    <td><label>
     <input type="text" name="" id="tel" /><span id="s6"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">QQ:</td>
    <td><label>
     <input type="text" name="" id="qq" /><span id="s7"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">邮箱:</td>
    <td><label>
     <input type="text" name="" id="email" /><span id="s8"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">邮编:</td>
    <td><label>
     <input type="text" name="" id="eml" /><span id="s9"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">身份证:</td>
    <td><label>
     <input type="text" name="" id="sname" /><span id="s10"></span>
    </label></td>
   </tr>
   <tr>
    <td align="right">验证码:</td>
    <td><label>
     <input type="text" id="y"/>
     <span style="80px;height: 20px;border: 1px solid red;background: url(1.png) -10px -15px;display: inline-block;" id="yz"></span>
     <a href="#" id="btn">看不清</a>
    </label><span id="s111"></span></td>
   </tr>
    <tr>
    <td align="right">爱好:</td>
    <td><label>
    <input type="checkbox" name="a" id="c1">
    足球
    <input type="checkbox" name="a" id="c2">
    篮球
    <input type="checkbox" name="a" id="c3">
    排球
    <input type="checkbox" name="a" id="c4">
    网球
    
    </label><span id="s13"></span></td>
   </tr>
   <tr>
    <td height="36" colspan="2" align="center"><label>
     <input type="submit" value="注册" />
    </label></td>
    </tr>
  </table>
</form>
</body>
</html>
<script src="../../二阶段案例/public.js"></script>
<script type="text/javascript">
  /*
   要求:
    1、使用失去焦点事件完成表单验证 每一项验证失去焦点时都可以即时验证
    2、姓名: 单词字符组成 6--10为 ,不能用数字开头
     年龄: 只能由数字组成 年龄不能为负数
     密码:6--18位字符组成 有密码强弱验证
    3、确认密码和密码相同
    4、手机号: 15 13 18 开头
    5、qq : 5--12位数字 第一位不能是数字
    6、邮箱: 必须有@符号
    7、邮编:6为数字
    8、身份证: 18位 最后一位考虑有x
    9、验证码
      输入的验证码必须和红色框中的相同, 点击看不清可以实现验证码的切换
      验证码由字母 数字组成
    10、爱好和性别必选  
   * */
   var oForm = document.querySelector("form");
   oForm.onsubmit = function(){
    if( flagName && checkSex() && flagAge && flagPwd && flagQpwd && flagTel && flagQQ && flagEmail && flagEml && checkHobby() && flagSname && flagSyz ){
      return true;
    }else{
      return false;
    }
   }  
    //用户名验证
    $id("name").onblur = function(){
       var flagName = null;
     var strName = $id("name").value;
     var reg = /^[^d][a-zA-Zd_]{5,9}$/;
     if( reg.test( strName ) ){
      flagName = true;
      $id("s1").innerHTML = "正确"
     }else{
      flagName = false;
      $id("s1").innerHTML = "字符组成 6--10为 ,不能用数字开头"
     }
    }
    
    //性别
    function checkSex(){
     if( $id("b").checked || $id("g").checked ){
        return true;
      }else{
        $id("s2").innerHTML = "必选一项";
        return false;
      } 
    }
    
    //年龄验证
    $id("age").onblur = function(){
      var flagAge = null;
      var strAge = $id("age").value;
      var reg = /^d$/;
      if( reg.test( strAge ) ){
        flagAge = true;
        $id("s3").innerHTML = "正确"
      }else{
        flagAge = false;
        $id("s3").innerHTML = "只能由数字组成 年龄不能为负数"
      }
    }
    
    //密码验证
    $id("pwd").onblur = function(){
      var flagPwd = null;
      var strPwd = $id("pwd").value;
      //纯数字 字母 特殊符号
      var regNum = /^d+$/;
      var regLetter = /^[a-z]+$/i;
      var regChar = /^[^0-9a-z]+$/i;
      //包含 数字 字母 特殊符号
      var _regNum = /d+/;
      var _regLetter = /[a-z]+/i;
      var _regChar = /[^0-9a-z]+/i;
      if( strPwd.length < 6 || strPwd.length > 18 ){
       return;
      }
      if( regNum.test(strPwd)||regLetter.test(strPwd)||regChar.test(strPwd) ){
        //弱
        $id("s4").innerHTML = "密码较弱";
      }else if( _regNum.test(strPwd)&&_regLetter.test(strPwd)&&_regChar.test(strPwd) ){
        //强
        $id("s4").innerHTML = "密码较强";
      }else{
        //中
        $id("s4").innerHTML = "密码不强不弱";
      }
    }
    
    //确认密码验证
    var flagQpwd = null;
    $id("qpwd").onblur = function(){
      var strPwd = $id("pwd").value;
      var strQpwd = $id("qpwd").value;
      if( strQpwd != "" ){
        if( strPwd == strQpwd ){
          flagQpwd = true;
          $id("s5").innerHTML = "正确";
        }else{
          flagQpwd = false;
          $id("s5").innerHTML = "两次密码不一致";
        }
      }
    }
    
    //手机验证
    var flagTel = null;
    $id("tel").onblur = function(){
    var strTel = $id("tel").value;
    var reg = /^1[358]d{9}$/;//手机号
      if( reg.test( strTel ) ){
        //正确
        flagTel = true;
        $id("s6").innerHTML = "正确";
      }else{
        //错误
        flagTel = false;
        $id("s6").innerHTML = "手机号: 15 13 18 开头";
      }
    }
    
    //QQ号验证
    var flagQQ = null;
    $id("qq").onblur = function(){
      var strQQ = $id("qq").value;
      var reg = /^[^0]d{4,11}$/;
      if( reg.test( strQQ ) ){
        flagQQ = true;
        $id("s7").innerHTML = "正确";
      }else{
        flagQQ = false;
        $id("s7").innerHTML = "5--12位数字 第一位不能是0";
      }
    }
    
    //邮箱验证
     var flagEmail = null;
     $id("email").onblur = function(){
      var strEmail = $id("email").value;
      var reg = /^w+@w+(.w+)+$/;
      if( reg.test( strEmail ) ){
        flag = true;
        $id("s8").innerHTML = "正确";
      }else{
        flag = false;
        $id("s8").innerHTML = "必须有@符号";
      }
     }
    
     //验证邮编
     var flagEml = null;
     $id("eml").onblur = function(){
      var strEml = $id("eml").value;
      var reg =/^d{6}$/;
      if( reg.test( strEml ) ){
        flag = true;
        $id("s9").innerHTML = "正确";
      }else{
        flag = false;
        $id("s9").innerHTML = "只能是6为数字";
      }
     }
    
     //身份证验证
     var flagSname = null;
     $id("sname").onblur = function(){
      var strSname = $id("sname").value;
      var reg =/^[1-9]d{16}(d|x)$/;
      if( reg.test( strSname )){
        flag = true;
        $id("s10").innerHTML = "正确";
      }else{
        flag = false;
        $id("s10").innerHTML = "只能是18位数字, 最后一位可以是x";
      }
     }
    
     //验证码刷新
     function yzm(){
     var str = "";
     for(var i= 1;i<=6;i++){
      var code = rand(48,122);
      if(code>=58&&code<=64 || code>=91&&code<=96){
        i--;
      }else{
        str += String.fromCharCode(code);
      }
     }
     return str;
   }
     $id("yz").innerHTML = yzm();
     $id("btn").onclick = function(){
     $id("yz").innerHTML = yzm();
     }
     
     //验证码验证
     var flagYz = null;
     $id("y").onblur = function(){
      var str = this.value;
      var strOld = $id("yz").innerHTML;
      if(str == strOld){
        $id("s111").innerHTML = "ok";
        flagYz = true;
      }else{
        $id("s111").innerHTML = "erro"
        flagYz = false;
      }
     }
    
    //爱好验证
    function checkHobby(){
    //统计被选中的复选框的个数 大于等于2 返回true
    var count = 0;
    var hs = document.getElementsByName("a");
    for( var i = 0 ; i < hs.length ; i++ ){
      if( hs[i].checked ){
        count++;
      }
    }
    if( count >= 2 ){
      flag = true;
    }else if( count < 2 ){
      flag = false;
      $id("s13").innerHTML = "至少选择两项";
    }
  }
</script>
原文地址:https://www.cnblogs.com/tis100204/p/10328835.html