Вам понадобится как минимум два вызова на замену, один для запятой и один для запятой посередине:
var input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,(?=,)/g, ',NONE'); // add NONE
console.log(input);
input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,{2,}/g, ',NONE,'); // add NONE
console.log(input);
Во-первых, мы должны удалить запятые, чтобы в них не было записей NONE. Затем мы проверяем запятую, а затем проверочное утверждение, совпадающее с запятой. Я использовал lookahead, чтобы заставить регулярное выражение работать даже при наличии нескольких запятых (см. Пример).
Я добавил два возможных маршрута, один из которых ставит «NONE» между всеми запятыми, а другой уменьшает любое количество запятых до ОДНОЙ записи «NONE».
Синтаксис C # будет
var input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",(?=,)", ",NONE"); // add NONE
input.Dump();
input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",{2,}", ",NONE,"); // add NONE
input.Dump();