Ver Mensaje Individual
  #9 (permalink)  
Antiguo 10/07/2011, 16:24
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: $& en expresiones regulares

Cita:
EDITO: ¿Es buen camino? ¿O con él código que llevo intentando todo el rato no podría?
no, no se puede de esa forma. fijate que la referencia $& en si no contiene el string pareado por la expresión. según como yo lo veo, replace inserta el string $& cuando tiene una coincidencia y luego internamente el motor RegExp busca las referencias especiales y las reemplazas por el contenido. este paso es un proceso interno y no se puede tocar. aqui una demostración que ese método no funciona.

Código:
"!happy o !sad".replace(/!happy|!sad/g, console.log("$&"));

"!happy o !sad".replace(/!happy|!sad/g, (function(capture){console.log(capture);})("$&"));
nótese que en ambos códigos se imprime en la consola el string "$&" en lugar del string capturado por la expresión. la única forma que funciona hacer un replace al string capturado es si en lugar de pasar un string, pasaras una función en el segundo parámetro. en los enlaces que antes señalé habla respecto el segundo argumento. no obstante, aunque es posible mediante una función, el método que señale con backreference de grupos no requiere hacer ese proceso.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.