正規表現のメモの整理について


基礎知識
一元文字
\b     
\d    [0-9]
\w            [a-z0-9_]
\s     [\t\v
\r\f] \t ,\v ,
,\r ,\f \B \D [^0-9] \W [^a-z0-9_] \S [^\t\v
\r\f] . .* .? \u4e00-\u9fa5

にりょう語
{m,n}   m-n ,    m 
{n,}    n    
{n}     n 
?     0 1,      {0,1}
+     1     {1,}
*     0 n         {0,}


eg:
/\d?/            //  1 0   
/\d{2,4}/        //  2 4   
/\s+java\s+/     //   1          java
/[^(]*/          //  1       

三集合文字クラス
[abc]      a/b/c     
[^abc]       abc        

[a-z]      a z     
//  :   -         
'ahd-fj-k'.replace(/[a-z]/g,'A')   //   》AAA-AA-A
//                   
    1.      \
    'ahd-fj-k'.replace(/[a-z\-]/g,'B')   //  BBBBBBBB
    2.       -
    'ahd-fj-k'.replace(/[a-z\-]/g,'B')   //  BBBBBBBB

//()             like this 
//'(122)do('.replace(/[(\d)]/g,'A')     AAAAAdoA  
//                  
 

四枝
123|34|567 //  123 34 567

五境界が終わり始めた
^ //      []   
$ //    

ろくしゅうきごう
g //                  
i //     
m //    
//  3     

七貪欲モードと非貪欲モードjsデフォルト貪欲モード、すなわち最大可能なマッチングを非貪欲モードに変更したい場合は、後に追加しますか?
  :

'123456789'.replace(/\d{3,6}/,'XX') //  XX
//            6   》X   3             X
'123456789'.replace(/\d{3,6}?/,'XX') //  XXX
//                3      〉 3 X

8パケットと参照とキャプチャパケットは、上記の量詞の役割と文字のセットを正則的に非常に強力な機能です.構文丸括弧(*);
/([0-9])[a-z]+\1{3}/.test('2aa222') //true

/([0-9]+)[a-z]+\1/.test('12aa12')   //true
/([0-9]+)[a-z]+\1/.test('12aa13')   //false

//          。  "\1"          ,              

/.*/.test('sdlk
sdjks
sdkl') // true

すべての()を使って逮捕されてグループになるわけではありません.次に、非キャプチャパケットがパフォーマンスを向上させ、論理的使用を簡素化することについて説明します.
**(***) //         
(?:***) //         **

  : 
 a1b2c3d4      +1
'a1b2c3d4'.replace(/(\d)/g,function($1){
return $1*1+1
})
//   a2b3c4d5

 2015-12-25     12 25 2015 
'2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2 $3 $1 ')  
//   12 25 2015 

     :
'2015-12-25'.replace(/(\d{4})-(?:\d{2})-(\d{2})/g,'$2 $3 $1 ') 
//   ()   ?:            。   $1   2015, $2   25
//   25 $3 2015   

九展望正則表現はテキストヘッダから着実に解析を開始しようとし、テキストの末尾方向を「前」と呼ぶ.左から右へ
展望とは、断言に属するかどうかを前向きにチェックすることです.バックグラウンド/バックグラウンド方向は逆ですがjavascriptではバックグラウンドはサポートされていません.
       :
'a2*3w4sb'.replace(/\w(?=\d)/g,'X') //  X2*3X4sb
//   \w        。
//(?=\d)           。         
// \w (  |  |   )       \d    。
//       a2 a w4 w; 


       :
'a2*3w4sb'.replace(/\w(?!\d)/g,'X') //   aX*XwXX
//   \w        。
//(?!\d)           。         
// \w (  |  |   )       \d    。
//       2* 2 3w 3 4s 4 sb s b           ; 
 


呼び出し方法
Js      RegExp       
var reg = new RegExp('^[a-z]+[0-9]$', 'gi')

Perl        
var reg = /^[a-z]+[0-9]$/gi

よく使う
  • test戻りブール値
      :
    /^\d+$/.test('12637') //true
    /^\d+$/.test('sdk')   //false
  • search検索された対応する位置が返されなければ-1//searchはgが設定されていても1回しか検索されないことに注意してください.繰り返し呼び出しも開始位置から
        
     'ad1cd2c'.search(/\d/g) //2            
     'adcd'.search(/\d/g)    //-1    
  • replace置換
    ('a1b2c3').replace(/\d/g,'  ') //a  b  c  
  • splitは配列に分割しても正則を書くことができます.マッチング分割が見つからない場合は自己変配列
       'a12b23c34'.split('1')      //["a", "2b23c34"]
       'a12b23c34'.split(/\d{2}/g) //["a", "b", "c", ""]    
       'a12b23c34'.split(/[23]/g)  //["a1", "b", "", "c", "4"] 
       'a12b23c34'.split(/[55]/g)  //["a12b23c34"]
  • matchは、execが返す配列に一致する文字列と類似していて異なる.書き方が異なるmatchは文字列の方法で、str.match(reg)execは正規表現の方法で、書き方はreg.exec(str)
         :
       var reg = new RegExp("abc") ; 
       var str = "3abc4,5abc6";
       str.match(reg);
    
       var reg = new RegExp("abc") ; 
       var str = "3abc4,5abc6";
       reg.exec(str ); 
       
       ---------------------------------------
       
                :
       **exec match        ,              ;**
       
       var reg = new RegExp("[a-z]+") ; 
       var str = "1abc2,3abc4";
       alert(str.match(reg));
       alert(reg.exec(str));   
       //      abc
       
       
                 :
       **match         ;exec         。**
       var reg = new RegExp("[a-z]+","g") ; 
       var str = "1abc2,3bcd4";
       console.log(str.match(reg)); //["abc", "bcd"]
       console.log(str.match(reg)); //["abc", "bcd"]
       console.log(reg.exec(str));  //["abc"]
       console.log(reg.exec(str));  //["bcd"]
       //match         ; exec    。
       
       
                :
       **match exec           **
       var reg = new RegExp("a(bc)") ; 
       var str = "3abc4,5abc6";
       console.log(str.match(reg)); //["abc", "bc"]
       console.log(reg.exec(str)); //["abc", "bc"]
      
       
               :
       **match      ,                  ;
     exec             
       **
       var reg = new RegExp("a(bc)","g") ; 
       var str = "3abc4,5abc6";
       console.log(str.match(reg));  // ["abc", "abc"]
       console.log(str.match(reg));  // ["abc", "abc"]
       console.log(reg.exec(str));   // ["abc", "bc", index: 1]
       console.log(reg.exec(str));   // ["abc", "bc", index: 7]
      

  • 手当たり次第に簡単で正則である.
    /^\d+$/.test('2l')  //      
    
    /^\d{n}$/.test('2222')  //    n   
    
    /^\d{n,}$/.test('22222')  //    n     
    
    /^\d{m,n}$/.test('22222')  //    m n   
    
    /^[a-z]+$/i  //      
    
    /^[A-Z]+$/.test('SS’)  //        
    
    /^[0-9a-z]+$/i.test('1223ddsSSk')  //         
    
    /^\w+$/.test('wS233_')  //         
    
    /^[\u4e00-\u9fa5]+$/.test('   ') //   
    
    //       :     1   34568          9 
    /^1[3|4|5|6|8]{1}\d{9}$/.test('13347834892')
    
    //       YYYY-MM-DD
    1/2   3    - [0|1][1-9] - [0-1][1-9]
    /^[1-9]\d{3}-[0-1]\d-[0-3]\d$/.test('2017-12-20')
    
    
    //  html  :         
    '      。
    '.replace(/]+>/g,'') // email : @ .com /^\w+\@[a-z0-9]+(.com)$/.test('@qq.com') // Email : ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

    オンラインの正規可視化サイトもたくさんありますが、コピーしてチェックしてみると面白いです.クリックして正規可視化ページにジャンプ
    markは参考までに訂正してendを補充することを歓迎します