JSの正規表現

4422 ワード

1.RegExpタイプECMAScriptはRegExpタイプで正規表現をサポートします.
let expression=/pattern/flags;patternは任意の正規表現であり、正規表現はゼロまたは複数のflagsを持つことができます.
共通の修飾子(マーク)
修繕子記述gグローバルマッチング検索のすべての整合項iを無視して、大文字小文字mを無視して、境界文字^と$を各行の先頭と最後に一致させ、文字列全体の先頭ではなく、複数行であることを覚えておく.y接着モードは、lastIndexを先頭とする文字列のみにマッチすることを示します.(自動的にグローバルモードをオンにします.)sデフォルトの場合の丸点は、改行記号以外の任意の文字にマッチし、s修饰符を加えた後、改行記号が含まれます.例:
//すべての「at」で終わる3文字の組み合わせにマッチし、サイズを無視してlet pattern=/.at/giを書きます.注:メタ文字にマッチするには変換が必要です.
1.1 RegExpコンストラクタ正規表現は、RegExpコンストラクタを用いて作成することもできます.2つのパラメータ:モード文字列と(オプション)マーク文字列を受信します.
let pattern 1=/[bc]at/i;
//pattern 1と同様に、構造関数で作成したlet pattern 2=new RegExp(「[bc]at」「i」)に過ぎません.
注意:RegExpのモードパラメータは文字列なので、場合によっては二次変換が必要です.具体的には、字面の量に対して、各バックスラッシュの前にもう一つのバックスラッシュを加えます.
1.2インスタンス属性の各RegExpには、モード情報のための例示的な属性がある.
属性記述global、ignorCase、sticky、unicode、multiiline、dotAllブール値.g、i、y、u、m、sマークlastIndexがソース文字列で次の検索の開始位置を表しているかどうかをそれぞれ判断し、常に0からスタートします.source表現の文字列(最初と最後のバーを除く)flagsマーク情報文字列1.3例方法①exec()は一つのパラメータだけを受信します.即ち、アプリケーションモードの文字列です.
マッチするものが見つかったら、最初のマッチ情報を含む配列を返します.マッチするものが見つからなかったら、nullに戻ります.返した配列は、Arayの例であるが、2つの追加的な属性:indexとinputを含む.
index:文字列の先頭にマッチします.input:検索する文字列
この配列の最初の要素はモード全体にマッチする文字列であり、他の要素は式中のキャプチャグループにマッチする文字列である.モードでグループを捕捉していない場合、配列は要素だけを含みます.
let text=「cat,bat」let pattern=/([bc])at/i
let matches=pattern.exc(text)//[「cat」、「c」、index:0、input:「cat、bat」、groups:undefined】consolone.logs(matches[0])//「cat」consolie.logs(matches[1])//“c”consolie.logs(matches.lastIndex);/グローバルマッチが使用されていません.常に0です.
このモードでgマークが設定されていると、exc()を呼び出すたびに次のマッチを文字列の中から前に検索します.以下の例に示すように、let text="cat,bat"let pattern=/([bc])at/gi;
let matches=pattern.exc(text)//[「cat」、「c」、index:0、input:「cat、bat」、groups:undefined】consolone.log(matches.lastIndex);3
pattern.exc(text)//[「bat」、「b」、index:4、input:「cat、bat」、groups:undefined】consolone.log(matches.lastIndex);7
pattern.exc(text)//null consolie.log(matches.lastIndex)//0注:パターンに接着マークyが設定されている場合、exc()を呼び出すたびに、lastIndexの位置にマッチするものを探すだけです.(グローバルモードの自動オン)
マッチングが途中で終了すると、lastIndexの属性値を調整してマッチングを回復することができます.
②test()は文字列パラメータを受信します.入力されたテキストがモードにマッチしている場合は、パラメータはtrueに戻ります.そうでなければfalseに戻ります.
私たちは合うかどうかだけに関心を持っています.test()を使ってもいいです.
③その他の方法toLocareStering()とtoStering():文字列表示の文字列量を返します.
let r=/([bc])at/iy;consolone.log(r.toString()//.「/([bc])at/iy」
valueOf():正規表現自体を返す
2.4コンストラクタ属性(静的属性)RegExpもいくつかの静的属性がありますが、一般的ではありません.省略する
2.文字列マッチング1.match()本質はRegExpのexec()方法と同じです.方法は、正規表現オブジェクトまたは表現文字列のパラメータを受信します.
let text=「cat,bat」let pattern=/(.)at/i
let matches=text.match/let matches=pattern.ext(text)等価
//[「cat」、「c」、index:0、input:「cat、bat」、groups:undefined】consoline.log(matches[0]);「cat」consolie.logs(matches[1])//“c”consolie.logs(matches.lastIndex);/グローバルマッチが使用されていません.常に0です.
2.search()検索モードでは、正規表現オブジェクトまたは表現文字列を受信します.パターンの最初のマッチする位置インデックスを返します.見つからない場合は-1を返します.
let text=「cat,bat,sat,fat」let pos=text.search(/at/);consolie.logs(pos)//1
3.replace()は文字列を置換するために用いられ、方法は2つのパラメータを受信し、最初のパラメータはRegExpオブジェクトまたは文字列、2番目のパラメータは文字列または関数である.
最初のパラメータが文字列である場合は、最初の文字列だけが置換されます.すべて置換される場合、正規表現にはグローバルタグが必要です.
第二のパラメータは文字列の場合、いくつかの特殊文字があります.マッチングの値n:nは0-9で、1番目のグループを表す文字列です.
let text="bat、cat、fat、tat"let pattern=/(.)at/g;
let result=text.replace(pattern、「$1」);1はグループ1、つまりatの前のキャラクターconsolie.logtを表します.bb,cc,ff,tt
2番目のパラメータは関数で、関数は3つのパラメータを受信します.マッチした文字列全体、マッチングインデックス、文字列全体です.(複数のグループは何度も送信されます).関数は置換内容を表す文字列を返します.
function htmlEscape(text){
return text.replace(/[<>"&]/g,
    function(match, pos, originalText) {
        switch(match) {
            case "":
                return ">";
            case "&":
                return "&";
            case "\"":
                return """;
        }
    });
}consolie.logs(htmlEscape(「ハローワールド!」);ハローワールド
4.スプリット()は文字列を配列に分割するために使用され、最初のパラメータはRegExpオブジェクトまたは文字列であり、2番目のオプションパラメータは配列の最大サイズを指定するために使用されます.
let colorText=「red,blue,green,yellow」let colors 1=colorText.split(",")//[「red」、「blue」、「green」、「yellow」、let colors 2=colorText.split(",",2);/[「red」、「blue」、let colors 3=colorText.split(/1+/)、//「」、「」、「、」、「、」、「」、「」の区切り記号が最初と最後に現れたら、配列の前後に空の文字列要素が現れます.