正規表現はRubyのURI.regexp(%w(http https))から得たものを利用。こんな感じで良いのだろうか?適度に短い正規表現を使うべきだろうか。
XSSに対して脆弱で無いか、試せてなし。
追記
置換対象がHTMLだと、既にリンクであるaタグのhrefの中身を置換しちゃう。置換対象をテキストノードにすると、HTMLが消えちゃう。
追記:2011/11/03
テキストノードだけを置換対象とするようにしたものも書いてみた。
追記: 2011/11/03
正確でないかもしれないけど、ブラウザのJSコンソールで見た感じ。
- テキストノードのdataプロパティの値は文字参照がデコード済み
- setAttributeで属性値をセットする際は文字参照にエンコードされる
DOMのAPIを使えば安全に読み書きできるということだろうか。ちゃんと把握せねばならんね。