• 1月28日 表单验证和正则表达式


    表单验证:
    一、非空验证:
    1、内容是不是空的。
    判断值的长度是不是0。length属性。

    2、内容是不是改变了。

    二、对比验证:
    1、验证两个控件值的关系(相同,大小)

    2、验证控件的值与某个固定值的关系。

    三、范围验证:

    四、格式验证:
    正则表达式。regularexpression

    字符
    
    描述
    
        标记下一个字符是特殊字符或文字。例如,"n" 和字符 "n" 匹配。"
    " 则和换行字符匹配。序列 "\""" 匹配,而 "(" 则和 "(" 匹配。
    ^    匹配输入的开头。
    $    匹配输入的末尾。
    *    匹配前一个字符零或多次。例如,"zo*""z""zoo" 匹配。
    +    匹配前一个字符一次或多次。例如,"zo+""zoo" 匹配,但和 "z" 不匹配。
    ?    匹配前一个字符零或一次。例如,"a?ve?""never" 中的 "ve" 匹配。
    .    匹配除换行字符外的任何单个字符。
    (pattern)    匹配 pattern 并记住该匹配。匹配上的子字符串,可以使用 Item [0]...[n],来从生成的 Matches 集合中取回。要匹配圆括号字符 ( ),则需使用 "("")"。
    x|y    匹配 x 或 y。例如,"z|food""z""food" 匹配。"(z|f)ood" 匹配 "zoo""food"。
    {n}    n 是非负整数。共匹配 n 次。例如,"o{2}""Bob" 中的 "o" 不匹配,但和 "foooood" 中的前两个 o 匹配。
    {n,}    n 是一个非负整数。至少匹配 n 次。例如,"o{2,}""Bob" 中的 "o" 不匹配,但和 "foooood" 中的所有 o 匹配。"o{1,}""o+" 等效。"o{0,}""o*" 等效。
    {n,m}    m 和 n 是非负整数。至少匹配 n 次而至多匹配 m 次。例如,"o{1,3}""fooooood" 中的前三个 o 匹配。"o{0,1}""o?" 等效。
    [ xyz]    字符集合。匹配括号内的任一字符。例如,"[abc]""plain" 中的 "a" 匹配。
    [^xyz ]    否定字符集合。匹配非括号内的任何字符。例如,"[^abc]""plain" 中的 "p" 匹配。
    [a-z]    字符范围。和指定范围内的任一字符匹配。例如,"[a-z]" 匹配 "a""z"范围内的任一小写的字母表字符。
    [^m-z]    否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]" 匹配不在 "m""z"范围内的任何字符。
        匹配字的边界,也就是说,在字和空格之间的位置。例如,"er""never" 中的 "er" 匹配,但和 "verb" 中的 "er" 不匹配。
    B    匹配非字边界。"ea*rB""never early" 中的 "ear" 匹配。
    d    匹配数字字符。等价于 [0-9]。
    D    匹配非数字字符。等价于 [^0-9]。
    f    匹配换页字符。
    
        匹配换行字符。
    
        匹配回车符字符。
    s    匹配任何空白,包括空格、制表、换页等。与 "[ f
    
    	v]" 等效。
    S    匹配任何非空白字符。与 "[^ f
    
    	v]" 等效。
    	    匹配制表字符。
    v    匹配垂直制表符。
    w    匹配包括下划线在内的任何字字符。与 "[A-Za-z0-9_]" 等效。
    W    匹配任何非字字符。与 "[^A-Za-z0-9_]" 等效。
    
    um    匹配 num,其中 num 是一个正整数。返回记住的匹配的引用。例如,"(.)1" 匹配两个连续的同一字符。
    
        匹配 n,其中 n 是八进制换码值。八进制换码值必须是 12、或 3 位长。例如,"11""11" 都匹配制表字符。"011""01" & "1" 是等效的。八进制换码值必须不超过 256。如果超过了,则只有前两位组成表达式。允许在正则表达式中使用 ASCII 码。
    xn    匹配 n,其中 n 是十六进制换码值。十六进制换码值必须正好是两位长。例如,"x41""A" 匹配。"x041""x04" & "1" 是等效的。允许在正则表达式中使用 ASCII 码。

    邮箱验证:(其他验证也是这个形式,只要把正则表达式换一下就可以)

    function checkEmail()
    {
    var reg = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;
    var txt = document.getElementById("txtEmail").value;
    if(txt.match(reg) == null)
    {
    alert("邮箱格式不正确");
    return false;
    }
    else
    {
    return true;
    }
    }


    五、其它验证:

    案例一、邮箱验证:

    <body>
    <form action="" method="get">
    <table width="100%" border="1">
      <tr>
        <td width="20%" height="40" align="right">用户名:</td>
        <td width="50%">
          <input type="text" name="uid" id="uid" value="必填" style="color:#666" /></td>
        <td width="30%">&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">密码:</td>
        <td>
          <input type="text" name="uid2" id="idpd1" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">确认密码:</td>
        <td>
          <input type="text" name="uid3" id="idpd2" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">邮箱:</td>
        <td>
          <input type="text" name="uid4" id="idemile" /></td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <input type="submit" value="提交" onclick="return pp1()" />
    
    </form>
    <script language="javascript">
    
    function onui()
    {
        var ui1=document.getElementById("uid").value;
        if(ui1=="必填" || ui1.length=="0")
        {
            return "用户名不能为空
    ";    
        }
        else
        {
            return "";
        }
    
        
    }
    function onpd()
    {
        var error2="";
        var pd1=document.getElementById("idpd1").value;
        if(pd1.length=="0")
        {
            error2+="密码不能为空
    ";
        }
        var pd2=document.getElementById("idpd2").value;
        if(pd2.length=="0")
        { 
            error2+="确定密码不能为空
    ";
        }
        if(pd1!=pd2)
        {
            error2+="两次密码输入不一致
    ";
        }
        return error2;
    }
    function onemile()
    {
        var error3="";
        var emile1=document.getElementById("idemile");
        
        if(emile1.value.length=="0")
        {
            error3+="邮箱不能为空
    ";
        }
        else 
        {
             var reg=/^(w)+(.w+)*@(w)+((.w{2,3}){1,3})$/;
             if(emile1.value.match(reg)==null)
             {
                error3+="邮箱格式不正确
    ";
             }
         }
        return error3;
    }
    function pp1()
    {
        var allerror="";
        
        allerror+=onui();
        allerror+=onpd();
        allerror+=onemile();
        
        if(allerror.length==0)
        {
            return true;
        }
        else
        {
            alert(allerror);
            return false;
        }
    }
    
    </script>
    </body>

    案例二、微博输入140字,键盘或复制粘贴,输一个少一个。

    <body>
    <form action="" method="get">
    <textarea name="aaa" cols="20px" id="aaa" rows="10" onmousedown="pp1()"  onkeyup="pp1()"></textarea>
    <div id="bbb">还可以输入140个字</div>
    </form>
    
    <script language="javascript">
    function pp1()
    {
        var a1=document.getElementById("aaa").value;
        var a2=document.getElementById("bbb");
        var s=a1.length;
        if(140-s>=0)
        {
          a2.innerHTML="还可以输入"+(140-s)+"个字";
          window.setTimeout("pp1()",50);
        }
        else
        {
            a2.innerHTML="你输入的字以超出140字";
        }
    }
    </script>
    </body>

    效果图:

    案例三、必填:

    <body>
    <form action="" method="get">
    <table width="100%" border="1">
      <tr>
        <td width="20%" height="40" align="right">用户名:</td>
        <td width="50%">
          <input type="text" name="uid" id="uid" value="必填" style="color:#999" onfocus="chuxian()" onblur="xiaoshi()" /></td>
        <td width="30%">&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">密码:</td>
        <td>
          <input type="text" name="uid2" id="idpd1" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">确认密码:</td>
        <td>
          <input type="text" name="uid3" id="idpd2" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="40" align="right">邮箱:</td>
        <td>
          <input type="text" name="uid4" id="idemile" /></td>
        <td>&nbsp;</td>
      </tr>
    </table>
    </form>
    <script language="javascript">
    var yanse=document.getElementById("uid").style.color;
    function chuxian()
    {
        var a=document.getElementById("uid");
        if(a.value=="必填" && a.style.color==yanse)
        {
            a.value="";
             a.style.color="black";
        }
        
    }
    function xiaoshi()
    {
        var a=document.getElementById("uid");
        if(a.value=="")
        {
            a.value="必填";
            a.style.color="#999";
        }
        
    }
    </script>
    </body>
  • 相关阅读:
    详解用em替换px
    js判断是否为ie浏览器
    nth-child()选择器小结
    HTML5之canvas
    MQTT-SN协议乱翻之消息格式
    MQTT-SN协议乱翻之简要介绍
    MQTT 3.1.1,值得升级的6个新特性
    MQTT 3.1协议非严肃反思录
    MQTT协议笔记之mqtt.io项目HTTP协议支持
    MQTT协议笔记之mqtt.io项目Websocket协议支持
  • 原文地址:https://www.cnblogs.com/tzq9308/p/4257018.html
Copyright © 2020-2023  润新知