[Javascript] 文字列中のタグの構造を壊さずに、強調タグを入れる正規表現

こんばんは。
なかなかキツイ状況が続いているおじいさんです。
なので、口上はおいときます。内容は、JSの正規表現で、文字列中のタグの構造を壊さずに、強調タグを入れる事をやってみました。


<script>
var str = "abcdefghi abc<a>def</a>ghi <a>abc</a>defghi";
var keyword = "bcde";

var match = keyword;
match = match.replace(/(.)/gi, function (m) { return m+"(<[^>]+>)?"; });
alert(str.replace(RegExp(match, "gi"), function (m) {
  var tm = m.replace(/(.)(<[^>]+>)*/gi, function (m2, p1, p2) {
   return "<em>"+p1+"</em>"+(!!p2?p2:"");
  });
  tm = tm.replace(/<\/em><em>/g, "")
  return tm;
}));
</script>


結果(IEで実験)

a<EM>bcde</EM>fghi a<EM>bc</EM><A><EM>de</EM>f</A>ghi <A>a<EM>bc</EM></A><EM>de</EM>fghi


まあ、タグをまたいで強調表示とかする機会ってのはそうそうないと思いますが(^-^;)

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック