replaceで置換後の文字に、代入した文字を使った場合\\nなどを\nとして扱うには

置換後の文字列に、入力ボックスなどから持ってきた文字を使うと
\nなどは\\nとして認識されてしまう。
そういう場合は、'か"で囲んでevalに渡せばOKらしい。

//bを\nに置換

var text = 'aabaabaa';
var str  = '\\n';

text = text.replace(/b/g, eval('"' + str + '"'));

/*結果

aa
aa
aa

*/

追記

上記のようにした場合、今度は置換後の文字列に"(ダブルクオート)があった場合エラーになったw
とりあえず

eval('"' + str.replace(/"/g, '\\"') + '"')

エスケープして回避はできるけど、なにかしっくりしないな。
他にもありそうだし。