JS正則表現の簡素化教程(JavaScript RegExpオブジェクト)

4773 ワード

RegExpとは
RegExpは正規表現の略語です.
あるテキストを検索すると、検索する内容をモードで説明することができます.RegExpはこのモードです.
シンプルなパターンは、単独の文字であっても良いです.
より複雑なモードは、より多くの文字を含み、解析、書式チェック、置換などに利用できます.
文字列の検索位置や検索する文字の種類などを指定できます.
定義RegExp
const pattern = new RegExp('str');
RegExpオブジェクトの方法
  • test()
  • exec()
  • comple()
  • test()メソッドは文字列の指定値を検索します.戻り値はtrueまたはfalseです.
    const pattern = new RegExp('str');
    console.log(pattern.test('input string')); // true
    exec()メソッドは文字列の指定値を検索します.戻り値は、見つけられた値です.マッチが見つからない場合は、nullに戻ります.
    const pattern = new RegExp('str');
    console.log(pattern.test('input string')); // [ 'str', index: 6, input: 'input string', groups: undefined ]
    comple()メソッドは、RegExpを変更するために使用されます.検索モードを変更することも、2番目のパラメータを追加または削除することもできます.
    const pattern = new RegExp('e');
    console.log(pattern.test('The best things in life are free'));
    pattern.compile('d');
    console.log(pattern.test('The best things in life are free'));
    正規表現のStringオブジェクトをサポートする方法
  • search()
  • match()
  • replace()
  • スプリット()
  • search()メソッドは正規表現にマッチするサブ文字列を検索します.search()法はグローバルマッチングを実行しないので、フラグgを無視します.それは同時にregexpのlastIndex属性を無視して、いつも文字列の開始から検索を行います.これは常にstingObjectの最初のマッチングの位置に戻ることを意味します.
    // stringObject.search(regexp)    (        -1)
    
    const stringObj = 'Hello world';
    const result = stringObj.search(/l{3}/);
    console.log(result); // -1
    match()メソッドは、指定された値を文字列内で検索したり、1つ以上の正規表現のマッチングを見つけることができます.この方法はindexOf()とlastIndexOf()と似ていますが、文字列の位置ではなく指定された値を返します.
    // stringObject.match(regexp)    (        null)
    
    const stringObj = 'Hello world';
    const result = stringObj.match(/l{2}/);
    console.log(result); // [ 'll', index: 2, input: 'Hello world', groups: undefined ]
    replace()メソッドは、文字列の中で他の文字を一部の文字で置き換えたり、正規表現と一致するサブストリングを置き換えるために使用されます.文字列strigObjectのreplace()方法は検索と置換の動作を実行します.これはstrigObjectでregexpにマッチするサブ文字列を検索してreplaccementでこれらのサブストリングを置換します.regexpがグローバルフラグgを有する場合、replace()方法は、全ての整合したサブストリングを置き換えることになる.そうでなければ、最初の串だけを換えます.
    // stringObject.replace(regexp/substr,replacement)    (           )
    
    const stringObj = 'Hello world';
    const result = stringObj.replace(/l{2}/,'ii');
    console.log(result); // Heiio world
    split()メソッドは、文字列を文字列配列に分割するために使用されます.文字列配列を返します.配列は、separatorが指定した境界において文字列stingObjectをサブストリングに分割して作成した.返した配列の文字列には、separator自体が含まれていません.しかし、separatorがサブ表現を含む正規表現である場合、これらのサブ表現にマッチする文字列が返される.
    // stringObject.split(separator,howmany)    (        [stringObject])
    
    const stringObj = 'Hello world';
    const result = stringObj.split(/l{2}/);
    console.log(result) // [ 'He', 'o world' ]
    
    RegExpパラメータ
  • 直接量文法
  • /pattern/attributes
  • RegExpオブジェクトを作成するシンタックス
  • new RegExp(pattern, attributes);
    パラメータpatternは文字列で、正規表現のモードまたは他の正規表現を指定します.
    パラメータatributesは、属性「g」、「i」、「m」を含み、大域一致を指定し、大域一致を識別するためのオプションの文字列です.ECMAScriptが標準化されるまでは、m属性はサポートされていません.patternが正規表現である場合は、文字列ではなく、そのパラメータを省略しなければなりません.
    注意
    const reg = /str/;
    const newReg = reg.compile(reg, 'i'); //   
    console.log(newReg.test('string'))
    
    //     
    const reg = /str/;
    const newReg = new RegExp(reg, 'i');
    console.log(newReg.test('string'));
    付表
  • 修飾子
  • 修飾子
    説明
    i
    大文字と小文字のマッチングに敏感ではありません.
    g
    グローバルマッチを実行
    m
    複数行マッチを実行
  • 四角いかっこ
  • 表式
    説明
    [abc]
    四角いかっこの中の任意の文字を検索します.
    1
    四角括弧の間にない任意の文字を検索します.
    [0-9]
    0から9までのすべての数字を検索します.
    [a-z]
    小文字aから小文字zまでの任意の文字を検索します.
    [A-Z]
    大文字Aから大文字Zまでの文字を検索します.
    [A-z]
    大文字Aから小文字zまでの文字を検索します.
    [adgk]
    指定されたセット内の任意の文字を検索します.
    [^adgk]
    指定されたセット以外の任意の文字を検索します.
    (red¦ ブルー¦グリーン)
    指定されたオプションを検索
  • 元の文字
  • メタ文字
    説明
    ...
    行の区切り以外に、単一の文字を検索します.
    w
    単語の文字を検索します.
    W
    単語以外の文字を検索します.
    d
    数字の文字を検索します.
    D
    非数値文字を検索します.
    s
    空白の文字を検索します.
    S
    空白以外の文字を検索します.
    b
    単語の境界にマッチします.
    B
    単語以外の境界にマッチします.
    0
    NUL文字を検索します.
    n
    改行を検索します
    f
    変換子を検索します
    r
    リターンを検索します
    t
    タブを検索します
    v
    垂直タブを検索します.
    xxx
    八進数×で指定された文字を検索します.
    xdd
    16進数ddで指定された文字を検索します.
    uxxxx
    16進数xxxxで規定されているユニフォーム文字を検索します.
  • 助数詞
  • メタ文字
    説明
    n+
    少なくとも1つのnを含むすべての文字列にマッチします.
    n*
    ゼロまたは複数のnを含む任意の文字列にマッチします.
    nですか
    ゼロまたはnを含むすべての文字列にマッチします.
    n{X}
    X個のnのシーケンスを含む文字列と一致します.
    n{X,Y}
    XからYまでのシーケンスを含む文字列と一致します.
    n{X}
    マッチは少なくともX個のnのシーケンスを含む文字列です.
    n$
    nで終わる任意の文字列にマッチします.
    ^n
    任意の先頭がnの文字列にマッチします.
    ?n
    任意の直後に指定された文字列nの文字列にマッチします.
    ?n
    後に文字列nが指定されていない文字列にマッチします.
    abc↩