javascript初心者です。
jsでHTML内に、
テキストで書かれた文字のうち、URLの部分をリンク付けをしたいです。
ただ、日本語のURLにも対応したいので、
一度エンコーディングしてから正規表現の文字列をURLにして、
デコーディングしています。
その際、
テキスト内に改行があると、改行(<br>)部分もURLの一部分として認識されてしまいます。
どのようにすれば、http/https以降の文字を
改行を含ませずに
リンクにすることができるでしょうか?
考えている流れとしては、
①HTML内でテキスト表示する内容部分をタグで定義する。
②URLの正規表現を定義
(正規表現は次のものにしています)
js
1var exp = /(https?://[\w/:%#?()~.=+\-]+)/ig;
③jsにてタグのinnerHTMLを内容を取得
④ ③の内容をエンコーディング
⑤ replace関数を使って、④のうちURL部分を有効にする
js
1 replace(exp,"<a href='$1'>$1</a>");
⑥ ⑤をデコーディングする。
⑦ 取得したタグのinnnerHTMLに⑥を返す
■起こっていること
以下のようにテキストに値が入っていると
HTML
1URL(←文字列)<br> 2http://www.XXX/XXX<br> 3<br> 4文字列です
以下の様なURLが<a>タグに入っています。
HTML
1URL(←文字列) 2<a href=http://www.XXX/XXX<br><br>文字列です>http://www.XXX/XXX</a> 3 4文字列です
■HTMLで表示させたいことは以下の様にしたいです。
HTML
1URL(←文字列) 2<a href=http://www.XXX/XXX>http://www.XXX/XXX</a> 3 4文字列です
至らぬところありましたら、すみませんがご指摘お願いします。