Quote:
|
Originariamente inviato da MEMon
ho ancora qualche problemino, mettiamo che abbia una stringa così composta:
_blabla bl 123456 blaa_ciao mondo!_bla bla pappapero_
come faccio ad eliminare la parte di testo compresa fra i caratteri '_' senza che sappia com'è composta?
ho provato un str.replace(/_.+_/i,"") ma mi cancella tutta la stringa!
|
Ci siamo quasi ... ma c'è una piccola questione che non hai considerato (o probabilmente non conosci). L'espressione
X+ è un quantificatore definito "greedy" (=avido, ingordo) perché cerca di catturare il massimo numero di caratteri possibili. Quindi, con la stringa di input sopra, cattura tutto ciò che c'è tra il primo _ e l'ultimo _ (quello dopo pappapero) e non solo fino al _ dopo blaa (come si vorrebbe).
La soluzione è usare un quantificatore non greedy.
str.replace(/_.+?_/gi,"")
Il '?' rende il quantificatore non greedy, adesso cerca di catturare il minor numero di caratteri. Il flag 'g' serve per continuare nel replace, così non si ferma al primo match.