この記事では正規表現のフラグについて解説します。
正規表現は/◯◯/g
のような形で使われることが多いですが、このgのことをフラグと呼びます。
gの他にもm,i,u,yなどがあります。
この記事の目次
正規表現のフラグの種類
『g』の使い方
最も見かけることの多いフラグは「g」です。
gは「該当する部分すべて」を検索してくれます。
var str1 = 'a12oj1589-ああ9go_33'
var result1_1 = str1.match(/[0-9]+/g);
console.log(result1_1);
// 結果
[ '12', '1589', '9', '33' ]
[0-9]+
で0~9の数字の1回以上の繰り返しを検索します。
g
がつくことで、検索条件に該当するすべての数字を抽出します。
補足:gなしの場合どうなるか
gをなしで使うと、どうなるのか見てみましょう。
var str1 = 'a12oj1589-ああ9go_33'
var result1_2 = str1.match(/[0-9]+/);
console.log(result1_2);
// 結果
[ '12' ]
上記のように出力されます。
gなしの場合「一番始めに該当した部分が抽出される」と覚えておきましょう。
『m』の使い方
続いてフラグ「m」を見てみましょう。
mは「複数行に対して検索」します。
var str2 = "1234\n567\n890";
var result2_1 = str2.match(/^567/m);
console.log(result2_1);
// 結果
[ '567' ]
上記のように、改行が入った場合にも検索を実行してくれます。
補足:mなしの場合どうなるか
var str2 = "1234\n567\n890";
var result2_2 = str2.match(/^567/);
console.log(result2_2);
// 結果
null
mを外すと、改行を含んだ場合の検索はされません。
『i』の使い方
フラグ「i」は「大文字・小文字」を区別しません。
実際に見てみましょう。
var str3 = "ABcdE";
var result3_1 = str3.match(/abcd/i);
console.log(result3_1);
// 結果
[ 'ABcd' ]
上記のように、iがつくと「abcd」に該当します。
補足:iなしの場合どうなるか
iなしの場合は大文字・小文字を区別するので、nullになります。
var str3 = "ABcdE";
var result3_2 = str3.match(/abcd/);
console.log(result3_2);
// 結果
null
『u』『y』について
uとyは高度な使い方になるので、ここでは割愛します。
正規表現のフラグを実際に触ってみよう
紹介した「g,m,i」の3つのフラグを実際に触って動かしてみましょう。