>>407
var str="a 0 b 0 c 0 d 0 e";
str=str.replace(/((?:[^0]*0[^0]*){2})0/, "$11");
alert(str); //a 0 b 0 c 1 d 0 e

変数でn番目を指定したいなら
var n = 3;
str = str.replace(new RegExp("((?:[^0]*0[^0]*){" + (n-1) +"})0"), "$11");

・後方参照番号:$1 + 置換文字列:"1"
・後方参照番号:$11
これを区別して書くことはできないみたいだが、
いちおうグルーピング11個以上なんて場合じゃなければ前者に解釈される。