2011-05-04 12 views
6

Diciamo che ho testo (non html), che sto tirando da una textarea. Sembra:Javascript - string.replace() testo che si estende su più righe?

ALTER LOGIN [user1] DISABLE 

GO 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 


ALTER LOGIN [user2] DISABLE 

GO 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 

~~~~~~~~~~~~~ important stuff to keep ~~~~~~~~~~~~~~~ 

Sto tentando di eliminare da ALTER a GO per ciascun utente. Con replace(), posso sostituire da ALTER a DISABLE, ma non riesco a capire come abbinare completamente a GO (che è sulla riga successiva), in modo che rimuova l'intero blocco. Pensieri?

+0

hai pensato di sostituire il testo utilizzando le espressioni regolari? –

+0

Sono piuttosto orribile con regx, sicuramente qualcosa su cui ho bisogno di lavorare. Grazie per la risposta Alex! – mike

risposta

17

. in un regex corrisponde a ogni carattere eccetto\n. In alcuni tipi di espressioni regolari, è possibile aggiungere il flag s per farlo corrispondere, ma non in Javascript.

Invece, è possibile utilizzare la classe di caratteri [\s\S], che corrisponde a tutti gli spazi bianchi e tutti gli spazi non bianchi, che è tutto. Il ? dopo il * significa che non sarà avido, altrimenti corrisponderà tra il primo ALTER e l'ultimo GO.

str = str.replace(/ALTER[\s\S]*?GO/g, ''); 

jsFiddle.

Problemi correlati