正規表現のプログラミング

JScript では、正規表現を使用して、文字列内のパターンの検索、テキストの置換、および部分文字列の抽出を行うことができます。

検索

以下の JScript の例は、1 つの単語のすべての一致を検索します。

正規表現を作成するステートメントは次のとおりです。

var re = /\w+/g;

/\w+/ というパターンは、A-Z、a-z、0-9、またはアンダースコア文字から成る 1 つ以上の文字と一致します。 パターンの後に g (グローバル) フラグが指定されているので、最初の一致だけでなく、すべての一致が検索されます。

次の JScript 構文を代替構文として使用することもできます。

var re = new RegExp("\\w+", "g");

一致を 1 つずつ取得するため、exec メソッドは、lastIndex の位置から、null が返されるまで検索を続けます。

function SearchGlobal()
{
    var src = "The quick brown fox jumps over the lazy dog.";

    // Create a regular expression pattern that has a global flag.
    var re = /\w+/g;

    var result;

    // Get the first match.
    result = re.exec(src);
    while (result != null)
    {
        print (result.index + "-" + result.lastIndex + "\t" + result[0]);

        // Get the next match.
        // Because the global flag is set, the search starts at the
        // position of lastIndex.
        result = re.exec(src);
    }

    // Output:
    //  0-3 The
    //  4-9 quick
    //  10-15 brown
    //  16-19 fox
    //  20-25 jumps
    //  26-30 over
    //  31-34 the
    //  35-39 lazy
    //  40-43 dog
}

次の例は、最初の一致だけを検索します。 グローバル フラグ (g) が設定されていないため、検索文字列の先頭から検索が開始されます。

function SearchNonGlobal()
{
    var src = "The quick brown fox jumps over the lazy dog.";

    // Create a regular expression that does not have
    // a global flag.
    var re = /\w+/;

    // Get the first match.
    // Because the global flag is not set, the search starts
    // from the beginning of the string.
    var result = re.exec(src);

    if (result == null)
        print ("not found");
    else
        {   
        print (result.index + "-" + result.lastIndex + "\t" + result[0]);
        }

    // Output:
    //  0-3 The
}

置換

次の例は、"the" を "a" に置き換えます。 この正規表現のフラグには i (大文字小文字を区別しない) フラグが含まれていないため、"The" は置換されません。

この例では replace メソッド が使用されています。

function ReplaceGlobal()
{
    var src = "The batter hit the ball with the bat ";
    src += "and the fielder caught the ball with the glove.";

    // Replace "the" with "a".
    var re = /the/g;
    var result = src.replace(re, "a");

    print(result);

    // Output:
    //  The batter hit a ball with a bat and a fielder caught a ball with a glove.
}

部分文字列の抽出

正規表現パターンでかっこ () を使用すると、サブマッチが後で使用できるように保存されます。

次の例では、パターンに 3 つのサブマッチが含まれています。 サブマッチ文字列は、それぞれの一致と共に表示されます。

exec メソッドによって配列が返されます。 配列の要素 0 には完全一致が格納され、要素 1 から要素 n にはサブマッチが格納されます。

function SearchWithSubmatches()
{
    var result;

    var src = "Please send mail to george@contoso.com and someone@example.com. Thanks!";

    // Create a regular expression to search for an e-mail address.
    // Include the global flag.
    // (More sophisticated RegExp patterns are available for
    // matching an e-mail address.)
    var re = /(\w+)@(\w+)\.(\w+)/g;

    // Get the first match.
    result = re.exec(src);
    while (result != null)
    {
        print ("e-mail address: " + result[0]);

        // Get the submatched parts of the address.
        print ("user name: " + result[1]);
        print ("host name: " + result[2]);
        print ("top-level domain: " + result[3]);
        print ("");

        // Get the next match.
        result = re.exec(src);
    }

    // Output:
    //  e-mail address: george@contoso.com
    //  user name: george
    //  host name: contoso
    //  top-level domain: com

    //  e-mail address: someone@example.com
    //  user name: someone
    //  host name: example
    //  top-level domain: com
}

Flags

JScript の正規表現では、/abc/gim のように、グローバル フラグである g、大文字と小文字の区別を無視するフラグである i、および複数行フラグである m を指定できます。

使用できるフラグを次の表に示します。

JScript のフラグ

フラグが指定されている場合の動作

g

検索範囲の文字列から特定のパターンを検索するとき、最初の一致だけでなく、すべての一致が検索されます。

i

検索時に大文字と小文字が区別されません。

m

^ は、\n または \r の直後の位置と一致します。

$ は、\n または \r の直前の位置に一致します。

このフラグが存在するかどうかに関係なく、^ は、検索範囲の文字列の先頭位置と一致し、$ は、検索範囲の文字列の末尾位置と一致します。

追加の機能

以下の追加のプログラミング機能も用意されています。

機能

説明

compile メソッド (Visual Studio - JScript)

実行を高速化するために、正規表現を内部形式にコンパイルします。

test メソッド

特定のパターンが検索範囲の文字列に存在するかどうかをテストします。

search メソッド

最初の一致の位置を返します。

参照

参照

Regular Expression オブジェクト

概念

正規表現の構文

その他の技術情報

正規表現の作成