2012-01-23 11 views
8

estoy tratando de hacer un replace en una cadena como esta:jQuery reemplazar con variable?

$('#example_id').replace(/abc123/g,'something else') 

Pero el abc123 realidad tiene que ser una variable.

Así que algo como:

var old_string = 'abc123' 
$('#example_id').replace(/old_string/g,'something else') 

Entonces, ¿cómo habría que utilizar una variable en la función de reemplazar?

+0

¿Necesita usar una expresión regular? Si es así, tenga en cuenta que si old_string contenía algún tipo de expresión regular significativa, como '(', ')', '*', '.',' -', etc. deberá escaparse o probablemente falle su reemplazo. –

Respuesta

16

En primer $('#example_id') le dará un objeto jQuery, que debe reemplazar a cadena dentro de su html o valor. Prueba esto.

var re = new RegExp("abc123","g"); 
$('#example_id').html($('#example_id').html().replace(re, "something else")); 
0

crear un objeto RegExp:

var regexp = new RegExp(old_string, 'g'); 
$('#example_id').replace(regexp,'something else'); 

Editar: parámetros fijos

+0

el constructor para RegExp no necesita el 'y' inicial y posterior y el 'g' debe ser el segundo argumento. [JavaScript RegExp Object] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp) –

+0

Lo siento. Lo he arreglado – Yogu

0

Puede crear expresiones regulares usando constructor.

var re = new RegExp('abc123', 'g') 
$('#example_id').replace(re,'something else') 

Aquí está RegExp documentación.

Para reemplazar el contenido HTML interno del elemento puede utilizar el método html:

$('#example_id').html(function(i, s){return s.replace(re, 'replace with')}) 
1

Hay otra versión de reemplazar el cual toma un objeto RegExp. Este objeto puede ser construido a partir de una cadena literal:

var old_string = "abc123"; 
var myregexp = new RegExp(old_string,'g'); 
$('#example_id').replace(myregexp,'something else') 

Algunas informaciones útiles here