Просмотра назад в JS нет, поэтому проще наверно callback-функцией
var str = 'adf 23.12,45 kjk';
var dotFound = false;
var result = str.replace(/[^0-9]/g, function(ch) {
if ((ch == '.' || ch == ',') && !dotFound) {
dotFound = true;
return ch;
}
return '';
});
alert(result);