Exactamente, primero trata de coincidir el patrón tal cual, en este caso es:
{{letra mayus}}{{letra minus}}
Pero eso no es todo, el patrón tiene grupos de captura utilizando la sintaxis (PATRON) con paréntesis. Estos grupos de captura los puedes referenciar de dos formas en JavaScript:
1- Utilizando $N donde N es un número entero mayor o igual a 1 que corresponde al orden de aparición de izquierda a derecha en el RegExp.
2- Dentro del mismo patrón usando la sintaxis: \N.
3- Utilizando este callback en vez de la cadena de texto directa (fíjate en los parámetros que recibe):
// Posibles firmas
function(match: string, cg1: string, index: number): string;
function(match: string, cg1: string, cg2: string, index: number): string;
function(match: string, cg1: string, cg2: string, cg3: string, index: number): string;
function(match: string, [...cgN]: string[], index: number): string;
Como puedes observar, el callback recibe:
- La cadena que coincide con el patrón general.
- Uno, Dos, Tres o más grupos de captura (la cadena que coincidió).
- El índice en la cadena original en donde se encontró la coincidencia.
Y lo que retorna es la cadena que reemplazará la coincidencia.
Por tanto el código se puede re-escribir así:
'aBcD'.replace(/([a-z]) ([A-Z])/g, function(_coincidencia, minus, mayus) {
return minus + ' ' + mayus;
});
//> 'a Bc D'
La función se ejecuta cada que encuentra una coincidencia (en el caso de especificar la bandera global g.