テキストをハイパーリンク<a>と画像タグ<img>に変換します

ダガルティ

この関数を使用して、テキストをクリック可能なリンク(<a href=""> </a>に変換し、画像のURLをimgタグ(<img src="" />に変換しています

const parsecontent = (text)=>{
    var ishyperlink= /([^\S]|^)((https?\:\/\/)(\S+))/gi;
    return (text || "").replace(ishyperlink,
    function(match, space, url){
       var isimglink = /https?:\/\/.*\.(?:png|jpg|gif|jpeg)/i;
        if (url.match(isimglink)) {
         return space + '<a href="' + url + '"><img src="' + url + '" /></a>';
        }
     return space + '<a href="' + url + '">' + url + '</a>';
    }
  );
}

このように使う

const div = document.querySelector("#content");
div.innerHTML = parsecontent(div.innerHTML);

コンテンツに適切なスペースがあれば、問題なく動作します。それはリンクします、それが失敗するスペースで区切られていない画像のURL。plsは私がこれを修正するのを手伝ってくれますか?

Codepenはこちらhttps://codepen.io/dagalti/pen/GRqpYLp

画面

マイケルハミルトン

私はあなたのテストケースを満たすように調整された正規表現を思いついた。

この正規表現は、URLを照合する方法です。

((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))

あなたの例では、間に空白を入れずに2つのURLがあります。URLとURL以外の文字列の間に空白がない場合はどうなりますか?我々は可能性があり、それは(例えば、TLDに到達したとき、一致を終了.com.org等)。ただし、あなたの例を満たすために、空白なしで区切られた2つのURLを処理していると仮定しています。その場合、新しいURLの開始に気付いたときに、一致を終了します(?=https?)

([^\S]|^)((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))(?=https?)

次に、空白で囲まれたURLを照合します。

((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))

これらすべてをまとめると、次の正規表現が得られます。

([^\S]|^)((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))(?=https?)|((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))

replaceロジックも少し調整する必要があります

const parsecontent = (text)=>{
    var ishyperlink= /([^\S]|^)((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))(?=https?)|((https?\:\/\/)([\w!"#$%&\'()*+,-./@:;=\^_`{|}~]*))/gi;
    return (text || "").replace(ishyperlink,
    function(url){
       var isimglink = /https?:\/\/.*\.(?:png|jpg|gif|jpeg)/i;
        if (url.match(isimglink)) {
         return '<a href="' + url + '"><img src="' + url + '" /></a>';
        }
     return '<a href="' + url + '">' + url + '</a>';
    }
  );
}

この正規表現は非常に冗長である、あなたのテストケースを満たす、より簡潔な方法があるかもしれません(私はありませんregexpertが)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

画像のバイナリデータをimgタグに変換します

分類Dev

既存の<img>タグと<a>タグを変更せずに、特定のテキストをハイパーリンクに置き換えるにはどうすればよいですか?

分類Dev

img をリンクに変換し、 <a> タグをそれに含まれる画像の高さにする方法

分類Dev

BBCode [IMG]を<img>に変換します

分類Dev

Angularのテキストと<img>タグを含む文字列からスライダーに画像を表示する

分類Dev

imgタグ付きのdivを画像に変換する方法

分類Dev

div内のimgタグを、テキストが上にあるdivの背景画像として使用します

分類Dev

画像がimgタグに読み込まれたことを検出する

分類Dev

画像がimgタグに読み込まれたことを検出する

分類Dev

AngularJSは双方向のデータバインディングを使用して、画像をソースとしてimg要素タグに表示しますか?

分類Dev

クリックして戻ると、ハイパーリンクテキストをドロップダウンに変更します

分類Dev

Android:「フラグメント」でテキストをハイパーリンクに変更する方法

分類Dev

imgタグをjavascriptと交換する

分類Dev

imgタグなしでjsで画像をスタイリングする

分類Dev

imgリンクにカーソルを合わせたときにテキストを変更する

分類Dev

onclick変更画像をidタグなしのさまざまなimg量に添付します

分類Dev

アンカータグとImgタグがPHPファイルまたは画像を見つけられない

分類Dev

ハイパーリンクをサポートしていないテキスト エディター用に、ハイパーリンクを代替テキスト付きのクリップボードにコピーします。

分類Dev

TYPO3RTEは<img>を<amp-img>に変換します

分類Dev

テキストプロパティにさまざまなテキストフォーマットとハイパーリンクを配置する方法

分類Dev

フラグメント内のテキストビュー内にハイパーリンクを作成する

分類Dev

カールリクエストの画像をhtml <img>タグで表示する

分類Dev

Javascriptはキャンバスをimgに変換します

分類Dev

画像タグをimgタグにラップする方法

分類Dev

img htmlタグに複数の代替画像ソースを提供しますか?

分類Dev

Excelでハイパーリンクの表示テキストをトリミングする方法

分類Dev

imgタグを使用して画像グリッドを表示する

分類Dev

テキストではなくアイコンとしてハイパーリンクを表示する

分類Dev

テーブルをExcelにエクスポートした後、ハイパーリンクがテキストとして表示されます

Related 関連記事

  1. 1

    画像のバイナリデータをimgタグに変換します

  2. 2

    既存の<img>タグと<a>タグを変更せずに、特定のテキストをハイパーリンクに置き換えるにはどうすればよいですか?

  3. 3

    img をリンクに変換し、 <a> タグをそれに含まれる画像の高さにする方法

  4. 4

    BBCode [IMG]を<img>に変換します

  5. 5

    Angularのテキストと<img>タグを含む文字列からスライダーに画像を表示する

  6. 6

    imgタグ付きのdivを画像に変換する方法

  7. 7

    div内のimgタグを、テキストが上にあるdivの背景画像として使用します

  8. 8

    画像がimgタグに読み込まれたことを検出する

  9. 9

    画像がimgタグに読み込まれたことを検出する

  10. 10

    AngularJSは双方向のデータバインディングを使用して、画像をソースとしてimg要素タグに表示しますか?

  11. 11

    クリックして戻ると、ハイパーリンクテキストをドロップダウンに変更します

  12. 12

    Android:「フラグメント」でテキストをハイパーリンクに変更する方法

  13. 13

    imgタグをjavascriptと交換する

  14. 14

    imgタグなしでjsで画像をスタイリングする

  15. 15

    imgリンクにカーソルを合わせたときにテキストを変更する

  16. 16

    onclick変更画像をidタグなしのさまざまなimg量に添付します

  17. 17

    アンカータグとImgタグがPHPファイルまたは画像を見つけられない

  18. 18

    ハイパーリンクをサポートしていないテキスト エディター用に、ハイパーリンクを代替テキスト付きのクリップボードにコピーします。

  19. 19

    TYPO3RTEは<img>を<amp-img>に変換します

  20. 20

    テキストプロパティにさまざまなテキストフォーマットとハイパーリンクを配置する方法

  21. 21

    フラグメント内のテキストビュー内にハイパーリンクを作成する

  22. 22

    カールリクエストの画像をhtml <img>タグで表示する

  23. 23

    Javascriptはキャンバスをimgに変換します

  24. 24

    画像タグをimgタグにラップする方法

  25. 25

    img htmlタグに複数の代替画像ソースを提供しますか?

  26. 26

    Excelでハイパーリンクの表示テキストをトリミングする方法

  27. 27

    imgタグを使用して画像グリッドを表示する

  28. 28

    テキストではなくアイコンとしてハイパーリンクを表示する

  29. 29

    テーブルをExcelにエクスポートした後、ハイパーリンクがテキストとして表示されます

ホットタグ

アーカイブ