なんとなく思い付いて下のように書いてみました。文書中の改行を 1 個減らす処理です。こういう書き方ができない場合、 for 文とか再帰関数を使ってちょっと割に合わない感じのコードを書くことになるような気がします。僕としては大発見でした。
なんか match() でマッチした箇所に map() みたいに処理しています。実は replace() は二つのメソッドの合成みたいなものだったんですね。
return src.replace(/(r?n)+/g, rly => {
return rly.replace(/r?n/, "")
})