JavaScript 正規表現


正規表現(英語: Regular Expression、コード内ではよく regex、regexp または RE と略されます)は、単一の文字列を使用して、特定の構文規則に適合する一連の文字列を記述・照合する文字列検索パターンです。

検索パターンは、テキスト検索とテキスト置換に使用できます。


正規表現とは?

正規表現は、文字の並びによって形成される検索パターンです。

テキスト内でデータを検索するとき、検索パターンを使用して、照会したい内容を記述できます。

正規表現は、単純な1文字の場合もあれば、より複雑なパターンの場合もあります。

正規表現は、すべてのテキスト検索およびテキスト置換の操作に使用できます。

正規表現の詳細については、次を参照してください:正規表現 - チュートリアル。

構文

/正規表現の本体/修飾子(オプション)

このうち、修飾子はオプションです。


例:

var patt = /サンプル/i

例の解説:

/サンプル/iは正規表現です。

サンプルは正規表現の本体(検索に使用します)。

iは修飾子(大文字と小文字を区別しない検索です)。


文字列メソッドの使用

JavaScript では、正規表現は通常、search() と replace() の2つの文字列メソッドで使用されます。

search() メソッドは、文字列内の指定された部分文字列、または正規表現にマッチする部分文字列を検索し、その部分文字列の開始位置を返します。

replace() メソッドは、文字列内の一部の文字列を別の文字列で置換したり、正規表現にマッチする部分文字列を置換するために使用されます。


search() メソッドでの正規表現の使用

例

正規表現を使用して "サンプル" という文字列を大文字と小文字を区別せずに検索します:

var str = "Visit サンプル!"; var n = str.search(/サンプル/i);

出力結果は次のとおりです:

6

試してみる »


search() メソッドでの文字列の使用

search メソッドは文字列をパラメータとして使用できます。文字列パラメータは正規表現に変換されます:

例

文字列内の "サンプル" の部分文字列を検索します:

var str = "Visit サンプル!"; var n = str.search("サンプル");

試してみる »


replace() メソッドでの正規表現の使用

例

正規表現を使用し、大文字と小文字を区別せずに、文字列内の Microsoft を サンプル に置換します:

var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"サンプル");

結果の出力は次のとおりです:

Visit サンプル!

試してみる »

replace() メソッドでの文字列の使用

replace() メソッドは文字列をパラメータとして受け取ります:

var str = document.getElementById("demo").innerHTML; var txt = str.replace("Microsoft","サンプル");

試してみる »


お気づきになりましたか?


Note 正規表現パラメータは、上記のメソッドで使用できます(文字列パラメータの代わりとして)。
正規表現により、検索機能がより強力になります(例のように大文字と小文字を区別しない場合など)。


正規表現の修飾子

修飾子グローバル検索で大文字と小文字を区別しないようにできます:

修飾子 説明
i 大文字と小文字を区別しないマッチングを実行します。
g グローバルマッチングを実行します(最初のマッチを見つけた後に停止するのではなく、すべてのマッチを検索します)。
m 複数行マッチングを実行します。


正規表現のパターン

角括弧は、特定の範囲内の文字を検索するために使用されます:

式 説明
[abc] 角括弧内の任意の文字を検索します。
[0-9] 0 から 9 までの任意の数字を検索します。
(x|y) | で区切られた任意のオプションを検索します。

メタ文字は、特別な意味を持つ文字です:

メタ文字 説明
\d 数字を検索します。
\s 空白文字を検索します。
\b 単語の境界にマッチします。
\uxxxx 16進数 xxxx で規定された Unicode 文字を検索します。

量指定子:

量指定子 説明
n+ 任意の ... を少なくとも1つ含むn文字列にマッチします。
n* 任意の ... を0個以上含むn文字列にマッチします。
n? 任意の ... を0個または1個含むn文字列にマッチします。


RegExp オブジェクトの使用

JavaScript では、RegExp オブジェクトは、プロパティとメソッドがあらかじめ定義された正規表現オブジェクトです。


test() の使用

test() メソッドは正規表現メソッドです。

test() メソッドは、文字列がパターンにマッチするかどうかを検出するために使用されます。文字列にマッチするテキストが含まれている場合は true を返し、それ以外の場合は false を返します。

次の例は、文字列内の文字 "e" を検索するためのものです:

例

var patt = /e/;
patt.test("The best things in life are free!");

文字列には "e" が含まれているため、この例の出力は次のようになります:

true

試してみる »

正規表現の変数を設定する必要はなく、上記の2行のコードを1行にまとめることができます:

/e/.test("The best things in life are free!")


exec() の使用

exec() メソッドは正規表現メソッドです。

exec() メソッドは、文字列内の正規表現のマッチを検索するために使用されます。

この関数は、マッチした結果を格納した配列を返します。マッチが見つからない場合は、戻り値は null です。

次の例は、文字列内のアルファベット "e" を検索します:

例 1

/e/.exec("The best things in life are free!");

文字列には "e" が含まれているため、この例の出力は次のようになります:

e

試してみる »

その他の例

  • JS で入力文字列が数字、アルファベット、アンダースコアで構成されているかどうかを判定する

  • JS で入力文字列がすべてアルファベットかどうかを判定する

  • JS で入力文字列がすべて数字かどうかを判定する


完全な RegExp リファレンスマニュアル

完全な RegExp オブジェクトのリファレンスマニュアルについては、当サイトのJavaScript RegExp リファレンスマニュアル。

このリファレンスマニュアルには、RegExp オブジェクトのすべてのメソッドとプロパティが含まれています。

その他の拡張