const crRe = /(\n|\r\n)/; // LF or CRLF const brRe = /([^\s\>])((?:\n|\r\n)+)([^\r\n\<])/g; // Non-HTML newline const brFn = (_:any, pre:string, crlf:string, post:string) => { const count = (crlf.match(crRe)||[]).length; return pre + "<br>".repeat(count) + post; }; str = str.replaceAll(brRe, brFn);
https://files.mastodon.social/media_attachments/files/112/112/445/757/906/163/original/93e57c8c84781a01.png