改行コード入りの文字列群を <p> タグの段落フォーマットに変換する正規表現

みるみ

こうする。

const formatContent = (content: string): string => {
  return content
    .replace(/(([^\r\n]+(\r?\n)?)+)/gim, "<p>$1</p>")
    .replaceAll(/\r?\n([^<])/gim, "<br />$1")
}

これは外部ユーザーによって投稿されたコメントを整形するために書いたのだけど、その中でリンク文字列を自動的に a タグ変換したかったので下記も追加した。

const formatContent = (content: string): string => {
  return content
    .replace(/(([^\r\n]+(\r?\n)?)+)/gim, "<p>$1</p>")
    .replaceAll(/\r?\n([^<])/gim, "<br />$1")
    // 下記を追加
    .replaceAll(
      /((<p>)|<br \/>)?(https?:\/\/[\w\/:;%#\$&\?\(\)~\.=\+\-]+)(\r?\n)?((<\/p>)|<br \/>)/gim,
      '$1<a href="$3" rel="nofollow ugc">$3</a>$5'
    )
}
みるみ
みるみ

ブロガー、ソフトウェアエンジニア。

暗号資産業界で働いています。

この記事へのコメント
コメントはまだひとつもありません :)

新しいコメントを書く

  • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
    ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
  • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
  • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください メールX からお願いします。