2012-01-23 16 views
8

che sto cercando di fare un replace su una stringa come questa:jQuery sostituire con variabile?

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

Ma la abc123 in realtà deve essere una variabile.

Quindi qualcosa di simile:

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

Così come dovrei utilizzare una variabile in funzione di sostituzione?

+0

È necessario utilizzare un'espressione regolare? Se è così, tieni presente che se old_string contiene caratteri di espressioni regolari significative come '(', ')', '*', '.',' -', ecc dovrà essere sfuggito o probabilmente interromperà la tua sostituzione. –

risposta

16

Prima di $('#example_id') vi darà un oggetto jQuery, si deve sostituire stringa all'interno della sua html o il valore. Prova questo.

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

Creare un oggetto RegExp:

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

Edit: parametri fissi

+0

il costruttore per RegExp non ha bisogno del comando iniziale e finale '/' e 'g' dovrebbe essere il secondo argomento. [Oggetto RegExp Javascript] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp) –

+0

Siamo spiacenti. L'ho risolto – Yogu

0

È possibile creare un'espressione regolare utilizzando il costruttore.

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

Ecco la documentazione di RegExp.

Per sostituire il contenuto HTML interna dell'elemento è possibile utilizzare il metodo html:

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

C'è un'altra versione di sostituzione che prende un oggetto RegExp. Questo oggetto può essere costruita a partire da una stringa letterale:

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

informazioni utili here

Problemi correlati