JavaScript 正規表現

❮ 前章へ 次章へ ❯

正規表現は、検索パターンを構成する一連の文字です。

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


正規表現とは何ですか?

正規表現は、検索パターンを構成する一連の文字です。

テキスト内のデータを検索する場合は、この検索パターンを使用して何を検索するかを記述することができます。

正規表現は、1つの文字にも、より複雑なパターンにもすることができます。

正規表現は、すべてのタイプのテキスト検索テキスト置換操作を実行するために使用することができます。

構文

/pattern/modifiers;

var patt = /w3schools/i;

例の説明:

/w3schools/i  は正規表現です。

w3schools  は(検索に使用する)パターンです。

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


String メソッドの使用

JavaScript では、search() と replace() という2つの string メソッドが正規表現でよく使用されます。

search() メソッドは、一致を検索するために式を使用し、一致した位置を返します。

replace() メソッドは、パターンで置換した変更後の文字列を返します。


正規表現を使った String search()

文字列内の "w3schools" を検索するために、大文字と小文字を区別しない正規表現を使用します:

var str = "Visit W3Schools";
var n = str.search(/w3schools/i);

result in n will be:

6
Try it Yourself »

文字列を使った String Search()

search メソッドには、検索の引数として文字列も指定できます。文字列の引数は正規表現に変換されます:

文字列内に "W3schools" を検索するために、文字列を使用します:

var str = "Visit W3Schools!";
var n = str.search("W3Schools");
Try it Yourself »

正規表現を使った String replace()

Microsoft を W3Schools に置換する、大文字小文字を区別しない正規表現を使用します:

var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3Schools");

res の結果は次の通り:

Visit W3Schools!
Try it Yourself »

文字列を使った String replace()

replace() メソッドには、検索の引数として文字列も指定できます:

var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "W3Schools");
Try it Yourself »

お気付きですか?

正規表現の引数(または、文字列引数)が、上のメソッドで使用することができました。
正規表現の方が、より強力な検索が可能です (例えば、大文字と小文字を区別しない検索).


正規表現の修飾子

修飾子 を使用すると、大文字と小文字を区別しないよりグローバルな検索を実行できます:

修飾子 説明
i 大文字小文字を区別しないマッチングを実行する
g グローバルマッチを実行する(最初のマッチの後に停止せずに、すべてのマッチを検索する)
m 複数行のマッチングを実行する

正規表現パターン

角括弧は、文字の範囲を検索するために使用します:

説明
[abc] 角括弧の間の全ての文字を検索する
[0-9] 角括弧の間の全ての数字を検索する
(x|y) | で区切られた選択肢のいずれかを検索する

メタキャラクタ は特別な意味を持つ文字です:

数量器は数量を定義します:
メタキャラクタ 説明
\d 数字を検索する
\s 空白文字を検索する
\b 単語の先頭または最後に一致するものを検索する
\uxxxx 16進数 xxxx で指定した Unicode 文字を検索する

Quantifiers define quantities:

Quantifier 説明
n+ 少なくとも 1 個の n を含む文字列に一致します
n* ゼロ個以上の n を含む文字列に一致します。
n? 0 か 1 個の n を含む文字列に一致します。

RegExp オブジェクトの使用

JavaScript での RegExp オブジェクトは、定義済のプロパティとメソッドを持つ正規表現オブジェクトです。


test() の使用

test() メソッドは、RegExp のメソッドです。

パターンを文字列の中から検索し、結果に応じて true か false を返します。

次の例では、文字列から "e" を検索します:

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

文字列に "e" があるため、上のコードの出力は次のようになります:

true
Try it Yourself »

最初に正規表現を変数に入れる必要はありません。上の2行は1行に短縮することができます:

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

exec() の使用

exec() メソッドは、RegExp のメソッドです。

指定したパターンの文字列を検索し、見つかったテキストを返します。

一致するものが見つからない場合、null を返します。

次の例では、文字列から "e" を検索します:

例 1

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

文字列に "e"があるため、上のコードの出力は次のようになります:

e
Try it Yourself »

完全な RegExp リファレンス

完全なリファレンスについては、完全な JavaScript RegExp リファレンスをご覧ください。

リファレンスには、すべての RegExp プロパティとメソッドの説明と例が含まれています。


❮ 前章へ 次章へ ❯