Почему существует необходимость в / g?
Поскольку предположительно у вас будет несколько пар в совпадающей строке, например, a:'b' c:'d'
Чтоточно передается в функцию?
Функция обратного вызова получает все совпадение в качестве первого аргумента, два более поздних аргумента - это группы захвата, указанные в вашем регулярном выражении.
"a:'b' c:'d'".replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
console.log($0, param, value);
});
Обратный вызов будет выполнен дважды, и он покажет вам "a:'b'"
для $0
, "a"
для param
и "b"
для value
при первом выполнении.
Во втором исполнении - для второго матча - покажет "c:'d'"
для $0
, "c"
для param
и "d"
для значения.