replace

FirefoxだとNOSCRIPTの中にテキストノードでHTMLタグが入っているみたいなので、こんな感じでとれるみたいです。

http://d.hatena.ne.jp/taizooo/20100203/1265127113#c1265135058
$x('//NOSCRIPT')[0].textContent.replace(/&(amp|lt|gt);/ig,function(_,_1){
	return {amp:'&',lt:'<',gt:'>'}[_1];
});

これをcreateHTMLDocumentByStringに渡せばよさそうな気がします。

http://d.hatena.ne.jp/taizooo/20100203/1265127113#c1265135058

var newString = str.replace(regexp|substr, newSubStr|function[, flags]);

https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace

置換文字列に関数使えるのかあ。

var x='&lt;p&gt;これをcreateHTMLDocumentByStringに渡せばよさそうな気がします。&lt;/p&gt;';
x.replace(/&(amp|lt|gt);/ig,function(_,_1){
	return {amp:'&',lt:'<',gt:'>'}[_1];
});
//<p>これをcreateHTMLDocumentByStringに渡せばよさそうな気がします。</p>

ああ、とっちらかった。置き換え自体は replace がするのか。関数は置き換える文字だけを返すんだな。

引数としての関数の指定

2 番目の引数として関数を指定するとき、その関数はマッチが完了された後に実行されます(この形式における関数の使用は、しばしばラムダ式と呼ばれます)。

指定する関数では、マッチした部分文字列を置き換える文字列を動的に作成することができます。関数呼び出しの結果は、置換する値として使われます。

ネストされた関数は、見つかった部分文字列を置き換える新しい文字列 (newSubStr) を決定するために、マッチした部分文字列を使います。指定した関数の引数を通してマッチした部分文字列が得られます。指定した関数の 1 番目の引数はマッチした部分文字列そのものを保持します。1 番目の引数が RegExp オブジェクトだった場合、それに続く n 個の引数は、括弧でキャプチャしたマッチによって記憶されたサブマッチの文字列として使うことができます。n には正規表現におけるサブマッチの文字列の数が入ります。最後に、最後の 2 つの引数は、そのマッチが現れた文字列内のオフセットとその文字列それ自身です。例えば、以下の replace メソッドは、 XXzzzz - XX , zzzz を返します。

https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
function replacer(str, p1, p2, offset, s)
{
  return str + " - " + p1 + " , " + p2;
}
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer);