プレーンな URL をリンクに置き換えるにはどうすればよいでしょうか? 質問する

プレーンな URL をリンクに置き換えるにはどうすればよいでしょうか? 質問する

以下の関数を使用して、特定のテキスト内の URL を一致させ、HTML リンクに置き換えています。正規表現はうまく機能していますが、現在は最初の一致のみを置き換えています。

すべての URL を置き換えるにはどうすればよいですか? execコマンドを使用する必要があると思いますが、その方法がわかりません。

function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}

ベストアンサー1

まず、URLを解析するために独自の正規表現を作成するのはひどい考えです。これは、誰かが書いてデバッグし、テスト済みそのための図書館は、RFCURIは複雑です。Node.js での URL 解析コードそしてWikipediaのページURI スキーム

URL の解析に関しては、さまざまなエッジ ケースがあります。国際ドメイン名、実際の(.museum)TLDと存在しない(.etc)TLD、奇妙な句読点など括弧、URL 末尾の句読点、IPV6 ホスト名など。

私は見てきました1トン図書館いくつかの欠点があるにもかかわらず、使用する価値のあるものがいくつかあります。

このタスクにすぐに不適格と判断したライブラリ:

正規表現にこだわるなら、最も包括的なのはコンポーネントからの URL 正規表現ただし、これを確認すると、存在しない 2 文字の TLD が誤って検出されることがあります。

おすすめ記事