グローバルな複数行一致
g 修飾子は、単に一致するすべての文字列を返すことを意味します
m 修飾子はdocsで最もよく説明されています:
開始文字と終了文字 (^ と $) は、複数行にわたって機能するものとして扱います (つまり、入力文字列全体の最初または最後だけでなく、各行の最初または最後 (\n または \r で区切られた) に一致します)。
そのため、質問の正規表現は、改行文字間のすべての文字列に一致します。
str = "This is the first line.\n" +
"This is the second line.\n" +
"This the third line.\n";
str.match(/^.*$/gm)
//["This is the first line.", "This is the second line.", "This the third line.", ""]
m 修飾子は必要ありません
開始アンカーと終了アンカーは実際には必要ありません。より単純でほぼ同等の正規表現は次のようになります。
str.match(/.+/g)
//["This is the first line.", "This is the second line.", "This the third line."]
この場合、は、改行を除く.+
1 つ以上の文字の任意の文字列と一致します。正規表現の一致はデフォルトで貪欲であり、可能な限り一致するように展開されます。そのため、文字列が行に分割されます。応答に空の文字列がないことに注意してください。
これは正規表現を必要としません
この正規表現が何をしているように見えるかという目的のために、正規表現をまったく使用しない方がよいでしょう:
str.split("\n");
//["This is the first line.", "This is the second line.", "This the third line.", ""]