JavaScript 文字列置換、可変な対象を全て置換

今更だけど、忘れそうなのでメモ。

JavaScript 文字列置換、replace ( 対象文字列, 置換文字列 ) は、
最初に見つかるもの1個だけを置換するのは、非プログラマでないかぎり常識で
全てを置換するのは、 正規表現 replace( /pattern/g , 置換文字列 ) を使うであろう。

最初に見つかるものだけ。

var result = str.replace("a", 'A');

全て、、

var result = str.replace(/a/g, 'A');

しかし、周りの処理ロジックの都合で、置換対象を /pattern/g のように、
リテラルにコードを記述するのでなく、動的な可変文字列を対象に、全て置換したい場合があるはずだ。
replaceall なるメソッドがあればいいのにと、いつも思う。が、そんなのあるわけない。

考え方を変えて、、対象文字列で splitして、置換文字列で JOINすれば良い。

var target;
// target が何らかの処理で文字列が動的に格納

var result = str.split(target).join('A')

ついでに以下を憶えておくとよい。
$& 使えば、マッチするものを再指定するので数字をシングルクォートで括る場合。。

var result = str.replace(/[0-9]+/g, "'$&'");