正則表達式---用戶驗證


一:正則表達式:

       是一種特殊的字符串模式,用於匹配一組字符串,定義一種規則去匹配一組符合規格的字符;

常用的正則匹配工具 

     在線匹配工具:

  1 http://www.regexpal.com/ 

      2 http://rubular.com/ 

     正則匹配軟件

      McTracer 

正則字符:

               "^" 匹配字符串起始位置

               “$” 結束位置

              “\w” 匹配字母,數字,下划線

              “.” 匹配換行以外的任何字符

              “[abc]”字符組 匹配包含括號內元素的符號

              “\s”匹配空格

             “\d”匹配數字

寫法改成大寫就是反義

            "\W"   匹配任意不是字母,數字,下划線 的字符

                "\S"   匹配任意不是空白符的字符

              "\D"  匹配任意非數字的字符

               "\B"  匹配不是單詞開頭或結束的位置

              "[^abc]"  匹配除了abc以外的任意字符

 量詞:

“*”   重復0次或更多次

“+”   重復1次或更多次

“?”  重復0次或一次

“{n}” 重復n次

“{n,m}”  重復n次到m次  包括臨界值

“{n,}” 重復n次或多次

捕獲分組

         先了解在正則中捕獲分組的概念,其實就是一個括號內的內容 如 "(\d)\d" 而"(\d)" 這就是一個捕獲分組,可以對捕獲分組進行 后向引用 (如果后而有相同的內容則可以直接引用前面定義的捕獲組,以簡化表達式) 如(\d)\d\1 這里的"\1"就是對"(\d)"的后向引用

               那捕獲分組有什么用呢看個例子就知道了

               如  "zery zery" 正則 \b(\w+)\b\s\1\b 所以這里的"\1"所捕獲到的字符也是 與(\w+)一樣的"zery",為了讓組名更有意義,組名是可以自定義名字的

                    "\b(?<name>\w+)\b\s\k<name>\b" 用"?<name>"就可以自定義組名了而要后向引用組時要記得寫成 "\k<name>";自定義組名后,捕獲組中匹配到的值就會保存在定義的組名里

          下面列出捕獲分組常有的用法

           "(exp)"    匹配exp,並捕獲文本到自動命名的組里

           "(?<name>exp)"   匹配exp,並捕獲文本到名稱為name的組里

           "(?:exp)"  匹配exp,不捕獲匹配的文本,也不給此分組分配組號

          以下為零寬斷言

           "(?=exp)"  匹配exp前面的位置

              如 "How are you doing" 正則"(?<txt>.+(?=ing))" 這里取ing前所有的字符,並定義了一個捕獲分組名字為 "txt" 而"txt"這個組里的值為"How are you do";

          "(?<=exp)"  匹配exp后面的位置

              如 "How are you doing" 正則"(?<txt>(?<=How).+)" 這里取"How"之后所有的字符,並定義了一個捕獲分組名字為 "txt" 而"txt"這個組里的值為" are you doing";

         "(?!exp)"  匹配后面跟的不是exp的位置

              如 "123abc" 正則 "\d{3}(?!\d)"匹配3位數字后非數字的結果

         "(?<!exp)"  匹配前面不是exp的位置

              如 "abc123 " 正則 "(?<![0-9])123" 匹配"123"前面是非數字的結果也可寫成"(?!<\d)123"

 正則驗證郵箱  用戶  姓名   密碼

<style type="text/css">
       #container{
         width:700px;
         margin:0px auto;
       } 
       form{
           margin:0px auto;
           width:450px;
       }
    </style>
    <script src="js/jQuery1.11.1.js"></script>
    <script type="text/javascript">
       //用戶名驗證
       function checkUserName(){
     
         //2.獲取用戶輸入的用戶名
             var username=$("[name=txtName]");
             var unameValue=username.val();
             //1.1 鎖定到消息框
                   var userMsg=$("#userMsg");
             if (unameValue=="") {
             
                //給消息框添加 提示消息
              
                //1.2html屬性賦值
                userMsg.html("用戶名不能為空");
                return false;
             }
             userMsg.html("");
             return true;
       }
       
       
       //用戶名驗證
       function checkPassword(){
       
         //2.獲取用戶輸入的密碼
             var pwd=$("[name=txtPwd]").val();
             var pwdMsg=$("#pwdMsg");
             if (pwd=="") {
                //1.2html屬性賦值
                pwdMsg.html("密碼不能為空");
                return false;
             }
             
             if(pwd.length<6||pwd.length>12){
               
                pwdMsg.html("密碼長度需要保證在6---12位之間");
                return false;
             }
             pwdMsg.html("");
             return true;
       }
    
    
    
      //檢測郵箱
      function checkEmail(){
        var reg=/^\w+@\w+\.\w+$/;
        var email=$("[name=txtEmail]").val();
        var result=reg.test(email);
        if(!result){
           //郵箱不合法
           $("#emailMsg").html("郵箱不合法");
           return false;
        }
        $("#emailMsg").html("");
        return true;
      }
    
       $(function(){
       
           //當用戶名失去焦點的時候,也要驗證
           var username=$("[name=txtName]");
           username.blur(function(){
              checkUserName();
           });
           
           var pwd=$("[name=txtPwd]");
           pwd.blur(function(){
              checkPassword();
           });
           
            var email=$("[name=txtEmail]");
            email.blur(function(){
               checkEmail();
            });
       
           //用戶沒有輸入,不能提交
           //1.點擊登錄      觸發的是表單的submit事件
           
           $("#form1").submit(function(){
               //1    三師兄    pass
               //2    二師兄    pass
               //3    大師兄    pass
               var sum=0;
               if (!checkUserName()) {
                  sum=sum+1;
               }              
               
               if (!checkPassword()) {
                  sum=sum+1;
               }  
               
               if(!checkEmail()){
                   sum=sum+1;
               }
               
               if(sum==0){
                 return true;
               }else{
                 return false;
               }
               
           });
       });
    </script>
    
    
</head>
<body>
    <div  id="container">
       <form action="Success.html" id="form1"method="get">
            用戶名:<input type="text"  name="txtName"/>  <span id="userMsg"></span><br />
            密碼:<input type="password" name="txtPwd" /><span id="pwdMsg"></span><br />
            郵箱:<input type="text" name="txtEmail" /><span id="emailMsg"></span><br />
        <input type="submit" value="Login" />
    </form>
    </div>
    
</body>
</html>

簡單的正則規定郵箱符

             * 郵編:6位  \d{6}
   
             * 11位的手機號  \d{11}  yymqqc@126.com.cn.net.org
   
             * 郵箱: \w+@\w+(\.\w+){1,4}
   
             * 驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。

             $(function() {
                       var reg = /^\d{6}$/;
                       var email = $("#email").val();
                       var flag = reg.test(email);
                  if (flag) {
                       alert('合法郵編');
                  } else {
                      alert('不合法郵編');
                  }
             });
      

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM