Что я хочу сделать, это str.replace(pattern, callback),
str.replace(pattern, callback)
не просто str.replace(pattern, replace_pattern),
str.replace(pattern, replace_pattern)
возможно ли сделать это в javascript?
Почему, да, вы можете сделать именно это: str.replace(pattern, function () { ... }).
str.replace(pattern, function () { ... })
Вот некоторая документация: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
Да
var s2 = s1.replace(/regex/, function(whole, part1, part2, ...) { ... })
В качестве первого аргумента функции передается вся совпадающая строка.Если есть какие-либо группы захвата, они передаются как последующие аргументы.