JavaScript: 行の先頭にマッチする正規表現

改行含む文字列の各行についてマッチさせたいとき。

mフラグをつけると各行の先頭にマッチします。 gフラグをつけると全てのマッチする文字列を探索します。

var str = "abcd1\nabcd2\nabcd3";
var regexp1 = new RegExp(`^abcd2$`);
str.match(regexp1); // null mフラグなしだと文字列全体の先頭/終端のみ

var regexp2 = new RegExp(`^abcd2$`, 'm');
str.match(regexp2); // ["abcd2"] mフラグをつけると各行にマッチする

var regexp3 = new RegExp(`^a.+$`, 'gm');
str.match(regexp3); // ["abcd", "abcd", "abcd"] mフラグとgフラグをつけると全ての行についてマッチさせます

詳説 正規表現 第3版

詳説 正規表現 第3版

余談

rubyだと^$はデフォルトで各行にマッチするので、文字列全体にマッチさせたいときは、\A\zを使ったりしますね。