正規表現の動作を変える6つのフラグを例とともに理解します。
フラグは正規表現の後に付いて全体の動作を変えるスイッチです。JavaScriptには6つあります。g(global)は最初の一致で止まらず、すべての一致を見つけます。このフラグがないと最初の1つだけが捕捉されます。
i(ignoreCase)は大文字小文字を区別しないようにします。m(multiline)は ^ と $ が文字列全体ではなく各行の先頭・末尾に合うように変えます。複数行のテキストを扱うときに必須です。
s(dotAll)はドット(.)が改行文字まで含むようにします。u(unicode)はユニコードのコードポイントと \p{...} プロパティエスケープを正しく解釈します。y(sticky)は lastIndex の位置で正確に始まる一致のみ許容します。
このテスターのフラグチップをオン・オフしながら、同じパターンがどう変わるか比較してみてください。特に g の有無によって結果の数がどう変わるかを目で確認すると、感覚がすばやくつかめます。