文章中の URL やメールアドレスに自動的にリンクを設定する方法

実行例

「URL っぽい文字をみつける」「メールアドレスっぽい文字列をみつける」というように、 文字列の中からあるパターンを探し出すには正規表現 (Regular Expression) を利用します。 そのこと自体は問題ないと思いますが、問題はどんなパターンにするか、ということです。 私の場合、下記のようなパターンで (今のところ) うまく行っています。

$(document).ready(function() {
  $('#btn').on('click', function(evt) {
    var s = $('#edit1').html();

    $('#result').html(getLink(s));
  });

  function getLink(s) {
    if (!s) {
      return '';
    }

    var re_url = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
    var re_mail = /((?:\w+\.?)*\w+@(?:\w+\.)+\w+)/gi;

    s = s.replace(re_url, '<a href="$1" target="_blank">$1</a>');
    s = s.replace(re_mail, '<a href="mailto:$1">$1</a>');

    return s;
  }
});

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説