dima***,
да, после матча получается массив. Но во втором случае вы берете из этого массива элемент и применяете реплейс к нему
rd= a.match(rega);
for (var i=0;i<rd.length; i++){
gf[i]=rd[i].replace(rega,'$1,$6,$4,$5');// rd - это массив, а rd[i] - это строка. Как еще объяснить-то? :)
а в первом пытались применять прям к массиву.
b[i][j]=b[i][j].match(rega);//b[i][j] - это массив
d[j]=b[i][j].replace(rega,'$1,$4,$2,$3');//b[i][j] - это массив