JavaScript - backreferences de regex de string

Você pode voltar a fazer referência como esta em JavaScript:

var str = "123 $test 123";
str = str.replace(/(\$)([a-z]+)/gi, "$2");

Isso (bastante bobo) substitui "$ test" por "test". Mas imagine que eu gostaria de passar a sequência resultante de $ 2 para uma função, que retorna outro valor. Tentei fazer isso, mas em vez de obter a string "test", recebo "$ 2". Existe uma maneira de conseguir isso?

// Instead of getting "$2" passed into somefunc, I want "test"
// (i.e. the result of the regex)
str = str.replace(/(\$)([a-z]+)/gi, somefunc("$2"));

questionAnswers(5)

yourAnswerToTheQuestion