JavaScriptと正規表現でプレーンURLをリンクに変換する方法

2024-04-04

JavaScriptと正規表現を使ってプレーンURLをリンクに変換する方法

この解説では、JavaScriptと正規表現を使って、テキスト内のプレーンURLを自動的にリンクに変換する方法を紹介します。

手順

  1. 正規表現の準備

URLを検出するための正規表現を準備します。以下の例は、一般的なURL形式を網羅するものです。

const urlRegex = /((?<!href="|href='|src="|src=')(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;

この正規表現は以下の条件を満たすURLを検出します。

  • href="href='src="src=' で囲まれていない
  • httphttpsftpfile のいずれかのスキームを持つ
  • 英数字、記号、および特殊文字を含む

URLの置換

以下のコードは、正規表現で検出されたURLを <a> タグに変換します。

function replacePlainUrlsWithLinks(text) {
  return text.replace(urlRegex, "<a href='$1'>$1</a>");
}

const textWithPlainUrls = "これは https://www.example.com/ の例です。";
const textWithLinks = replacePlainUrlsWithLinks(textWithPlainUrls);

console.log(textWithLinks); // 出力: これは <a href="https://www.example.com/">https://www.example.com/</a> の例です。

オプション

  • target="_blank" 属性と rel="noopener" 属性を追加することで、リンクを新しいタブで開くことができます。
  • 特定のURLのみをリンクに変換したい場合は、正規表現を調整する必要があります。

補足

  • この方法は、HTML要素内のテキストだけでなく、プレーンなテキストにも適用できます。
  • より複雑な要件に対応するために、正規表現をさらにカスタマイズすることができます。

注意事項

  • 正規表現は複雑になりやすいので、テストを十分に行うようにしましょう。
  • ユーザーが意図せずリンクをクリックしてしまう可能性があるため、リンクの色やスタイルなどを調整して視覚的に区別できるようにする必要があります。



<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>プレーンURLをリンクに変換する</title>
</head>
<body>
  <p>これは https://www.example.com/ の例です。そして、https://www.google.com/ もあります。</p>

  <script>
    const urlRegex = /((?<!href="|href='|src="|src=')(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;

    function replacePlainUrlsWithLinks(text) {
      return text.replace(urlRegex, "<a href='$1'>$1</a>");
    }

    const textWithPlainUrls = document.querySelector("p").textContent;
    const textWithLinks = replacePlainUrlsWithLinks(textWithPlainUrls);

    document.querySelector("p").innerHTML = textWithLinks;
  </script>
</body>
</html>

実行方法

  1. 上記のコードをHTMLファイルとして保存します。
  2. ブラウザでファイルを開きます。

出力

<p>これは <a href="https://www.example.com/">https://www.example.com/</a> の例です。そして、<a href="https://www.google.com/">https://www.google.com/</a> もあります。</p>

解説

  • urlRegex 変数は、URLを検出するための正規表現を定義します。
  • replacePlainUrlsWithLinks 関数は、正規表現で検出されたURLを <a> タグに変換します。
  • textWithPlainUrls 変数は、p 要素内のテキストを取得します。
  • textWithLinks 変数は、replacePlainUrlsWithLinks 関数を使って textWithPlainUrls を変換します。
  • innerHTML プロパティを使って、p 要素内のテキストを textWithLinks に置き換えます。

動作確認

ブラウザでファイルを開き、p 要素内のテキストを確認してください。URLが <a> タグに変換されていることを確認できます。




プレーンURLをリンクに変換する他の方法

HTMLの href 属性を使って、URLを直接リンクに変換することができます。

<a href="https://www.example.com/">https://www.example.com/</a>

Markdownを使用している場合は、URLを自動的にリンクに変換することができます。

これは https://www.example.com/ の例です。

ライブラリ

URLを自動的にリンクに変換するライブラリもいくつかあります。

これらのライブラリは、正規表現よりも使いやすく、さまざまなオプションを提供しています。

これらの拡張機能は、インストールするだけで簡単に使用できます。


javascript regex


【超便利】JavaScript 関数存在チェック:Optional Chainingでスマートに

typeof演算子は、オペランドのデータ型を返します。関数が存在する場合は "function" が返されます。in演算子は、プロパティまたはキーがオブジェクトに存在するかどうかを確認するために使用されます。関数オブジェクトは、関数に関する情報を提供します。関数オブジェクトが存在する場合は、関数が定義されていることになります。...


JavaScript、クッキー、ブラウザ以外で訪問者を識別する方法

ユーザーのログイン状態を維持訪問者の行動を分析ターゲティング広告の配信などです。JavaScriptとクッキーは、ウェブサイト訪問者を識別するために広く利用されている技術です。JavaScriptは、ブラウザ上で動作するスクリプト言語です。以下のような方法で、訪問者を識別することができます。...


【完全版】JavaScript、HTML、iframeを使ってコンテンツに合わせた幅と高さを調整する

そこで今回は、JavaScript、HTML、iframe を使って、コンテンツに合わせた幅と高さを動的に調整する方法を解説します。主に以下の2つの方法があります。1 高さを自動調整するiframe の高さをコンテンツの高さに自動調整する方法です。これは、JavaScript で iframe 内のコンテンツの高さを取得し、それを iframe の高さに設定することで実現できます。...


JavaScriptの未来を先取り!厳格モードでモダンなコードを書く

「use strict」を使用する主な理由は次のとおりです。コードの品質向上: 潜在的なバグやエラーを早期に発見しやすくなります。より安全なコード: 意図しない動作を防ぎ、セキュリティ上の脆弱性を軽減できます。将来性: 将来のバージョンのJavaScriptでは、厳格モードがデフォルトになる可能性があります。...


JavaScriptプロジェクトのバージョン管理:Bowerとnpmを超えた選択肢

バージョン表記 は、特定のパッケージのバージョンを指定するために使用されます。Bower と npm はそれぞれ独自のバージョン表記規則を持っています。Bower のバージョン表記は、次の形式を使用します。バージョン範囲: 1 つ以上のバージョンを指定できます。 単一バージョン: 例: 1.2.3 範囲: 例: ~1.2.3 (1.2.3 よりも大きいすべてのバージョン)...