好好學一遍JavaScript 筆記(五)

javaScript正則——RegExp:javascript

RegExp有個test()方法、若是給定字符串(只有一個參數)匹配這個模式、它就返回true、不然返回false。
正則表達式中/i,/g,/ig,/gi,/m的區別和含義
/i (忽略大小寫)
/g (全文查找出現的全部匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小寫)
/ig(全文查找、忽略大小寫)java

  
  
           
  
  
  1. var str = "jfkd@s,laj@fd,safd@saf,ds@";       
  2. var res = /@/gi;  //全文查找@   
  3. alert(res.test(str));   //輸出:true 

exec()方法、有一個字符串參數、返回一個數組。數組的第一個條目是第一個匹配、其它的是反向引用。正則表達式

  
  
           
  
  
  1. //aStr只包含第一個實例、就是"jfkd@sla"中的@ 
  2. var aStr = res.exec(str); 
  3. alert(aStr); 

String對象有個match()方法、它會返回一個包含在字符串中的全部匹配的數組。數組

  
  
           
  
  
  1. alert(str.match(res)); //輸出:@,@,@,@ 

另外一個叫作seartch()的字符串方法的行爲與indexOf()有些相似、可是它使用一個RegExp對象而非僅僅一個子字符串。Search()方法返回在字符串中出現的一個匹配的位置。ide

  
  
           
  
  
  1. //它從字符的索引[0]的位置開始查找 
  2. alert(str.search(res));  //輸出:4 

replace():函數

  
  
           
  
  
  1. /** 
  2.          * replace()、它能夠用另外一個字符串(第二個參數)來替換某個子串(第一個參數)的全部匹配 
  3.          */ 
  4.         var sRep = str.replace("@","瘦馬");   
  5.         alert(sRep);  //輸出:jfkd瘦馬s,laj@fd,safd@saf,ds@       
  6.          
  7.         /** 
  8.          * 也能夠將正則表達式看成第一個參數 
  9.          */ 
  10.         alert(str.replace(res,"瘦馬"));  //輸出:jfkd瘦馬s,laj瘦馬fd,safd瘦馬saf,ds瘦馬      
  11.          
  12.          
  13.         /** 
  14.          * 也能夠指定一個函數做爲replace的第二個參數 
  15.          */ 
  16.         var sFun = str.replace(res,function(){ 
  17.             return "瘦馬";     
  18.         }); 
  19.         alert("---------------"+sFun); //輸出:jfkd瘦馬s,laj瘦馬fd,safd瘦馬saf,ds瘦馬 
  
  
           
  
  
  1. /** 
  2.          * split() 
  3.          */     
  4.         alert(str.split("@"));   
  5.         //使用正則表達式、也能夠實現相同功能 
  6.         alert(str.split(/@/));  
  
  
           
  
  
  1. <!-- 一個replace方法處理的只能輸入數字的示例 --> 
  2.    <input size="25" value="" id="maxnum" name="tbmeetroom.maxnum" 
  3.                    onkeyup="this.value=this.value.replace(/\D/g,'')"    
  4.                     onafterpaste="this.value=this.value.replace(/\D/g,'')" />  

表達式中全部元字符必須進行轉義(在前面加上反斜槓)才能正確匹配。元字符是正則表達式語法的一部分、下面是正則表達式用到的全部元字符:( [ { \ ^ $ | ) ? * + .所以想要匹配一個問號、則:var reTest = /\?/;或者這樣表示:var reTest = new RegExp("\\?");第二行使用兩個反斜槓、稱之爲雙重轉義。this

字符類:spa

  
  
           
  
  
  1. <script type="text/javascript"
  2.         //簡單類——匹配"bat"、"cat"和"fat"  
  3.         var sToMatch = "a bat, a Cat, a fAt baT, a faT cat"
  4.         var reBatCatRat = /[bcf]at/gi;  
  5.         var arrMatches = sToMatch.match(reBatCatRat); 
  6.         //alert(arrMatches);   
  7.          
  8.         /** 
  9.          * 負向類——他能夠指定要排除的字符。 
  10.          * 例如、要匹配除了a和b的全部字符、那麼這個字符類就是[^ab]。 
  11.          * 脫字符號(^)告訴正則表達式字符不能匹配後面跟着的字符。 
  12.          * 前面的例子、若是隻想獲取包含at但不能以b或c開頭單詞: 
  13.          */ 
  14.         reBatCatRat = /[^bc]at/gi; 
  15.         arrMatches = sToMatch.match(reBatCatRat); 
  16.         //alert(arrMatches);    
  17.          
  18.         /** 
  19.          * 範圍類——要匹配全部的字母表中的字符、可是又實在不想逐個輸入、    
  20.          * 可使用:[a-z]。裏面的橫線(-)、它的意思是"從什麼到什麼"(a到z)   
  21.          * 這裏a-z僅僅匹配了小寫字母、除非使用i選項來指明不區分大小寫 
  22.          * 若是要僅僅匹配大寫字母則使用:[A-Z] 
  23.          * 取得以一、二、三、4結尾、number開頭的字符 
  24.          */ 
  25.         sToMatch = "number1,number2,number3,number4,number5,number6,number7,number8,number9";   
  26.         reBatCatRat = /number[1-4]/gi;   //或者使用負向類 /number[^5-9]/gi     
  27.         arrMatches = sToMatch.match(reBatCatRat);   
  28.         //alert(arrMatches);     
  29.          
  30.         /** 
  31.          * 組合類——由其餘的類組合而成的字符類。 
  32.          * 假設要匹配全部從a~m的字母以及從1-4的數字、以及一個換行符 
  33.          * [a-m1-4\n]  
  34.          * javaScript/ECMAScript不支持某些其餘正則表達式實現中的聯合類和交叉類。這意味着你不能有相似 
  35.          * [a-m[p-z]]或者[a-m[^b-e]]這類的模式出現  
  36.          */ 
  37.           
  38.           
  39.         /** 
  40.          * 預約義類 
  41.             代碼         等同於                      匹配 
  42.             .           [^\n\r]                 除了換行和回車以外的任意字符 
  43.             \d          [0-9]                   數字 
  44.             \D          [^0-9]                  非數字字符 
  45.             \s          [ \t\n\x0B\f\r]         空白字符 
  46.             \S          [^ \t\n\x0B\f\r]        非空白字符 
  47.             \w          [a-zA-Z_0-9]            單詞字符(全部的字母、全部的數字和下劃線) 
  48.             \W          [^a-zA-Z_0-9]           非單詞字符 
  49.              
  50.             想匹配三個數字 
  51.          */ 
  52.         sToMatch = "325 fds2";   
  53.         reBatCatRat = /\d\d\d/;   //或者使用負向類 /number[^5-9]/gi     
  54.         alert(reBatCatRat.test(sToMatch)); 
  55.     </script>  
相關文章
相關標籤/搜索