¿Cómo explicar “$ 1, $ 2” en Javascript al usar expresiones regulares?

Una pieza de código Javascript es la siguiente:

    num="11222333";
    re = /(\d+)(\d{3})/;
    re.test(num);
    num.replace(re, "$1,$2");

No pude entender la gramática de "$ 1, $ 2". El libro del que proviene este código dice que $ 1 significa RegExp. $ 1, $ 2 significa RegExp. $ 2. Pero estas explicaciones llevan a más preguntas:

Se sabe que en Javascript, el nombre de las variables debe comenzar con la letra o _, ¿cómo puede $ 1 ser un nombre válido de la variable miembro de RegExp aquí?

Si ingreso $ 1, la línea de comando dice que no está definida; si ingreso "$ 1", la línea de comando solo se refleja en $ 1, no en 11222. Entonces, ¿cómo sabe el método de reemplazo lo que significa "$ 1, $ 2"?

Gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta