JavaScript RegExpオブジェクト正規表現

21817 ワード

記事の目次
  • 正規表現を作成します.
  • 文法
  • 助数詞
  • 元の文字
  • メソッド
  • .string方法と連動する
  • .
    正規表現は文字列のルールを定義します.プログラムはこれらの規則に基づいて文字列が規則に合っているかどうかを判断してもいいし、文字列の中の規則に合っている内容を抽出してもいいです.
    正規表現を作成:
    var reg = new RegExp   ("  ","    ");
    var reg = /     /    
    
    構文
    マッチングモード:マッチングモードを設定する場合は、全部設定しなくてもいいし、1つ設定してもいいし、全設定してもいいです.設定時には順序要求がありません.
  • i:大文字小文字を無視する
  • g:グローバルマッチングモード
  • 正規の文法:
  • |または
  • []または
  • [^ ]
  • を除きます.
  • [a-z]小文字
  • [A-Z]大文字
  • [A-z]任意文字
  • [0-9]の任意の数字
  • 例1
    			var str="Hello World!";
    			var reg1=/[abc]/;		//false       a b c
    			var reg2=/a|d|e/;		//true       a d e
    			var reg3=/[^e]/;         //true       e   
    			var reg4=/[^Hello World!]/; //false      Hello World!   
    			var reg5=/[0-9]/;		//false      0-9   
    
    例2
    			var str="hello world!";
    			var reg1=/[A-z]/;		//true
    			var reg2=/[a-z]/;		//true
    			var reg3=/[A-Z]/;		//false
    			var reg4=/[A-Z]/i;		//true
    
    例3
    			var str="abc adc aec";
    			var reg1=/a[gmn]c/;    //false
    				// a[gmn]c     agc|amc|anc
    			var reg2=/a[bde]c/;		//true
    			var reg3=/a[bfg]c/;		//true
    
    助数詞
  • n{X}は、X個のnのシーケンスを含む文字列と一致する.例えば
  • /a{2}/不整合“candy”の中の“a”
  • /a{2}/マッチング“caandy”の二つの“a”は、“caaandy.”の中の最初の二つの“a”にマッチする.
  • /ab{2}/マッチングabb
  • /(ab){2}/マッチングab
  • n{X,} Xは正の整数である.前のモードnは少なくともX回の連続的な出現で一致した.例えば
  • /a{2、}/不整合“candy”中の“a”、
  • /a{2、}/マッチングは“caandy”と“caaaaaaaandy.”の中のすべての“a”です.
  • n{X,Y} XとYは正の整数です.前のモードnは連続して少なくともX回出現し、せいぜいY回で一致する.例えば
  • /a{1,3}/不整合“cdy”
  • /a{1,3}/マッチング「candy」の中の「a」、「candy」の中の二つの「a」
  • /a{1,3}/「caaaaaaaaaandy」の前の三つの「a」にマッチします.なお、「caaaaaaaaandy」にマッチする場合、元の文字列がより多くの「a」を持っていても、マッチング項目は「aa」である.
  • n+は、少なくとも1つのnを含むすべての文字列と一致する.n{1,}として理解できる.
  • /a+/マッチング「candy」の「a」
  • /a+/マッチング「caaaaaaaaandy」のすべての「a」.
  • n*は、ゼロまたは複数のnを含む任意の文字列と一致する.例えば
  • /bo*/マッチング「A ghost book」の中の「booo」、
  • /bo*/マッチング「A bird warbled」の「b」
  • /bo*/しかし、「A goat grunted」とは一致しません.
  • n?は、ゼロまたはnを含む任意の文字列と一致する.例えば
  • 			var str = "angel" ;
    			var reg = /x?/ ;	//true
    			var reg = /a?/ ;	//true
    			var reg = /(aa)?/ ;	//true
    
  • n$は、任意の終端nの文字列と一致する.
  • ^nは、任意の先頭nの文字列と一致する.
  • ?=nは、任意の直後に指定された文字列nの文字列と一致する.
  • 			var str="Is this all there is";
    			var reg = /is(?= all)/;	//true
    			var reg = /is(?= a)/ ;	//true
    			var reg = /is(?= l)/ ;	//false
    			var reg = /is(?= I)/ ;	//false
    
  • ?!nは、その直後に指定された文字列nがない文字列と一致する.
  • メタ文字
    メタ文字
    説明
    コメント.行の区切り以外に、単一の文字を検索します.
    正規表現では\を変換文字\.として使用し、.\\と表現し、\を表現している.\w単語の文字を検索[A-z0-9_]に相当し、任意の文字を含む数字の下線\W単語以外の文字を検索[^A-z0-9_]に相当し、数字の下線を除いて\d数字を検索[0-9]相当です.\D非数値文字を検索[^0-9]相当です.\s空白文字を検索
    スペースを含む\S空白文字以外を検索
    スペースなし\b単語の境界を合わせる\B単語以外の境界を満たす\0NULL文字を検索
    行の区切りを検索\f変換子を検索\rリターンを検索\tタブの検索\v垂直タブの検索\xxx八進数×で指定された文字を検索します.\xdd16進数ddで指定された文字を検索します.\uxxxx16進数xxxxで規定されているユニフォーム文字を検索します.
    例1:異なる位置のスペースを削除する
    			var str = "   hello   world   " ;
    			console.log(str.replace(/\s/g,"")); //  “helloworld”
    			console.log(str.replace(/^\s*/g,"")); //  “hello   world   ”
    			console.log(str.replace(/\s*$/g,"")); //  “   hello   world”
    			console.log(str.replace(/^\s*|\s*$/g,"")); //  “hello   world”
    
    例2:電子メールのマッチング
    //                .          @        .    (2-5 )
    			var reg=/^\w{3,}@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
    			var email = "[email protected]" ;			//true
    			var email = "[email protected]" ;			//true
    			var email = "[email protected]" ;			//true
    			var email = "[email protected]" ;			//true
    			var email = "abc0asfabc.com.cn" ;			//false
    			var result=reg.test(email);
    			console.log(result);
    
    解析:メール形式: ( 3 ) @ . (2-5 ) . (2-5 )正規表現:^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$
  • 先頭の任意のアルファベットの数字のアンダースコア→^\w{3,}
  • @→@
  • 任意文字数→[A-z0-9]
  • は.任意の文字で終り、1−2個の(\.[A-z]{2,5}){1,2}$を含む.例えば、qq.com edu.com.cnの後ろには1−2個の.xxx
  • があるかもしれない.
    方法
  • testは文字列で指定された値を検索する.trueまたはfalseを返します.
  • execは文字列で指定された値を検索します.見つかった値を返し、その位置を決定します.
  • compleは1.5バージョンで破棄されました.コンパイル正規表現.
  • string方法と連動する
  • search()は、正規表現またはサブ文字列から指定されたコンテンツパラメータを検索できます.正規表現または文字列は、表現に基づいて内容を検索し、最初に一致した内容の索引を返します.
  • 			var str="Hello World! Hi Sian! Hello CSDN";
    			var result=str.search("!");	//11
    			var result=str.search("。");	//-1
    			var result=str.search(/h/);	//-1         h 
    			var result=str.search(/h/i);	//0     i      
    			var result=str.search(/h/ig);	//0     i      
    
  • split()は、指定された内容に従って文字列または正規表現を一つの配列に分割することができます.
  • パラメータ:一つの文字列は、パラメータとして文字列に従って配列を分割し、正規表現を受信することができます.このとき、正規表現に従って配列
  • を分割します.
    			var str="Hi Sian! Hello csdn";
    			var result=str.split("s");  //   s  
    			//   (2) ["Hi Sian! Hello c", "dn"]
    			var result=str.split("");  //      
    			//   (19) ["H", "i", " ", "S", "i", "a", "n", "!", " ", "H", "e", "l", "l", "o", " ", "c", "s", "d", "n"]
    			var result=str.split(/s/i);  // s  ,      
    			//   (3) ["Hi ", "ian! Hello c", "dn"]
    
  • match()は、文字列と正規表現の一致する内容をパラメータに抽出することができます.正規表現によれば、文字列の中の要求に合致する内容を抽出し、1つの配列にカプセル化して返します.このパラメータがRegExpオブジェクトでない場合は、まずRegExpコンストラクターに渡す必要があります.これをRegExpオブジェクトに変換します.結果
  • マッチするサブストリングが見つからない場合、-1に戻ります.
  • 結果が見つかったら
  • 正規表現が大域一致すると、対応する配列
  • を返します.
  • 正規表現はグローバルマッチングではない場合、最初に出現したインデックス
  • を返します.
    			var str = "The rain in SPAIN stays mainly in the plain";
    			var result = str.match(/ain/);   //      
    			//    5
    			var result = str.match(/ain/g);		//    
    			//    (3) ["ain", "ain", "ain"]
    			var result = str.match(/[0-9]/g);		
    			//    null
    
  • replace()は、文字列で指定された内容を新しいコンテンツパラメータに置き換えることができます.
  • 最初のもの:置換された内容は、正規表現であっても良いし、文字列であっても良いし、文字列であれば、最初から検索された最初の内容だけが置き換えられます.
  • 番目の新しい内容、文字列
  • 			var str = "The rain in SPAIN stays mainly in the plain";
    			var result = str.replace("ain"," ");
    			// The r  in SPAIN stays mainly in the plain
    			var result = str.replace(/ain/," ");
    			// The r  in SPAIN stays mainly in the plain
    			var result = str.replace(/ain/g," ");	//    
    			// The r  in SPAIN stays m ly in the pl 
    			var result = str.replace(/ain/ig," ");	//       
    			// The r  in SP  stays m ly in the pl