给大家推荐一篇关于JS的正则…

来源:互联网 发布:九寨沟 几月 知乎 编辑:程序博客网 时间:2024/04/19 09:06
原文地址:给大家推荐一篇关于JS的正则表达的文章作者:星期八

由于转载不了,直接复制粘贴过来了,本文不是本人所写,原文出处为http://bbs.html5cn.org/thread-574-1-10.html  有空看看,觉得写得还行

 

一 javascript正则表达式的基本知识

   javascript正则对象创建 和用法

    声明javascript 正则表达式
   
    var reCat =new RegExp("cat");
     你也可以
    var reCat =/cat/;     //Perl 风格  (推荐)

2 学习最常用的 test exec matchsearch  replace  split6个方法

   1)test  检查指定的字符串是否存在

      var data = "123123";
      var reCat = /123/gi;
     alert(reCat.test(data));  //true
    
      //检查字符是否存在  g继续往下走  i 不区分大小写

   2) exec 返回查询值

      var data ="123123,213,12312,312,3,Cat,cat,dsfsdfs,";
      var reCat = /cat/i;
     alert(reCat.exec(data));  //Cat

    3)match  得到查询数组

      var data ="123123,213,12312,312,3,Cat,cat,dsfsdfs,";
      var reCat = /cat/gi;
      var arrMactches = data.match(reCat)

      for (var i=0;i <arrMactches.length ; i++)
      {
         alert(arrMactches);  //Cat  cat
      }

    4)search  返回搜索位置  类似于indexof

      var data ="123123,213,12312,312,3,Cat,cat,dsfsdfs,";
      var reCat = /cat/gi;
     alert(data.search(reCat));  //23


    5)replace  替换字符  利用正则替换

      var data ="123123,213,12312,312,3,Cat,cat,dsfsdfs,";
      var reCat = /cat/gi;
      alert(data.replace(reCat,"libinqq"));

    6)split  利用正则分割数组

      var data ="123123,213,12312,312,3,Cat,cat,dsfsdfs,";
      var reCat = /,/;
      var arrdata = data.split(reCat);

      for (var i = 0; i <arrdata.length; i++)
      {
         alert(arrdata
);
      }

 学习下  简单类  负向类  范围类  组合类

    //简单类
      var data ="1libinqq,2libinqq,3libinqq,4libinqq";
      var reCat = /[123]libinqq/gi;
      var arrdata = data.match(reCat);

      for (var i = 0; i <arrdata.length; i++)
      {
         alert(arrdata);  //1libinqq 2libinqq  3libinqq
      }

      //负向类
      var data ="alibinqq,1libinqq,2libinqq,3libinqq,4libinqq";  //u0062cf
      var reCat = /[^a123]libinqq/gi;
      var arrdata = data.match(reCat);

      for (var i = 0; i <arrdata.length; i++)
      {
         alert(arrdata
);  //4libinqq
      }

      //范围类
      var data ="libinqq1,libinqq2,libinqq3,libinqq4,libinqq5";  //u0062cf
      var reCat = /libinqq[2-3]/gi;
      var arrdata = data.match(reCat);

      for (var i = 0; i <arrdata.length; i++)
      {
         alert(arrdata);  //libinqq2  libinqq3
      }

      //组合类
     var data ="a,b,c,w,1,2,3,5";  //u0062cf
      var reCat = /[a-q1-4n]/gi;
      var arrdata = data.match(reCat);

      for (var i = 0; i <arrdata.length; i++)
      {
         alert(arrdata
);  //a b c 1 2 3
      }
二  javascript  正则表达式是分组知识
1) 简单分组

   <scriptlanguage="JavaScript">  
     <!--  
           
          
       var data ="Ah-mousemouse";    
       var reCat =/(mouse){2}/gi;     
       var arrdata =data.match(reCat);  
     
       for (var i = 0; i < arrdata.length;i++)  
        
           alert(arrdata[i]);  
        
     //-->  
     </script> 

 

2 复杂分组
   <scriptlanguage="JavaScript">  
     <!--  
           
          
       var data = "bb ba da bad dad aa";    
       var reCat = /([bd]ad?)/gi;   //匹配出 ba da bad dad  
       var arrdata =data.match(reCat);  
     
       for (var i = 0; i < arrdata.length;i++)  
        
           alert(arrdata[i]);  
            
          
     
       // 同时 也不介意将分组放在分组中间  
       // var re = /(mom( anddad)?)/;    匹配出mom  或  mon anddaa  
     //-->  
     </script> 

3 反向引用
   <scriptlanguage="JavaScript">  
     <!--  
        
     
       var sToMatch ="#123456789";  
       var reNumbers = /#(d+)/;  
       reNumbers.test(sToMatch);  
       alert(RegExp.$1);  
     
        
     
     
       var sToChange = "12345678";  
       var reMatch = /(d{4})(d{4})/;  
       var sNew = sToChange.replace(reMatch,"$2$1");  
       alert(sNew);  
     
        
     
     //-->  
     </script> 

4 候选
   <scriptlanguage="JavaScript">  
     <!--  
        
       var sToMatch1 = "red";  
       var sToMatch2 = "black";  
       var reRed = /red/;  
       var reBlack = /black/;  
     
       alert(reRed.test(sToMatch1) ||reBlack.test(sToMatch1));  
       alert(reRed.test(sToMatch2) ||reBlack.test(sToMatch2));  
     
        
     
       var sToMatch1 = "red";  
       var sToMatch2 = "black";  
       var reRedOrBlack =/(red|black)/;  
       alert(reRedOrBlack.test(sToMatch1));  
       alert(reRedOrBlack.test(sToMatch2));  
     
     //-->  
     </script> 

 

5 非捕获性分组
   <scriptlanguage="JavaScript">  
     <!--  
        
     
       var sToMatch ="#123456789";  
       var reNumbers =/#(?:d+)/;  
       reNumbers.test(sToMatch);  
       alert(RegExp.$1);  
     
        
     
       var sToMatch ="#123456789";  
       var reNumbers =/#(?:d+)/;  
       alert(sToMatch.replace(reNumbers,"abcd$1"));  
     
        
     //-->  
     </script> 

6 前瞻
   <scriptlanguage="JavaScript">  
     <!--  
        
     
     
         var sToMatch1 ="bedroom";  
         var sToMatch2 ="bedding";  
         var reBed =/bed(?=room)/;   
         alert(reBed.test(sToMatch1)); //true  
         alert(reBed.test(sToMatch2)); //false  
         
       //负向前瞻  
          
         var sToMatch1 ="bedroom";  
         var sToMatch2 ="bedding";  
         var reBed =/bed(?!room)/;   
         alert(reBed.test(sToMatch1));//false  
         alert(reBed.test(sToMatch2));//true  
     //-->  
     </script> 

7 边界
   <scriptlanguage="JavaScript">  
     <!--  
        
     
         var sToMatch = "Important word is the lastone.";  
         var reLastWord =/(w+).$/;   
         reLastWord.test(sToMatch);  
         alert(RegExp.$1); //one  
     
        
     
     
     
         var sToMatch = "Important word is the lastone.";  
         var reLastWord =/^(w+)/;   
         reLastWord.test(sToMatch);  
         alert(RegExp.$1); //Important  
     
        
         
         var sToMatch = "Important word is the lastone.";  
         var reLastWord =/^(.+?)b/;   
         reLastWord.test(sToMatch);  
         alert(RegExp.$1); //Important  
          
        
     
       var data = " First second thind fourth fifth sixth";    
       var reCat =/b(S+?)b/g;     
       var arrdata =data.match(reCat);  
     
       for (var i = 0; i < arrdata.length;i++)  
        
           alert(arrdata[i]);  
           
     
        
     //-->  
     </script> 

8 多行模式
   <scriptlanguage="JavaScript">  
     <!--  
           
          
       var data = " First secondn thind fourthn fifthsixth";    
       var reCat =/(w+)$/g;     
       var arrdata =data.match(reCat);  
     
       for (var i = 0; i < arrdata.length;i++)  
        
           alert(arrdata[i]);  
          
          
           
       var data = " First secondn thind fourthn fifthsixth";    
       var reCat =/(w+)$/gm;     
       var arrdata =data.match(reCat);  
     
       for (var i = 0; i < arrdata.length;i++)  
     
        
           alert(arrdata[i]);  
        
          
     
     //-->  
     </script>