2011-05-04 15 views
6

Powiedzmy, że mam tekst (nie html), który wyciągam z textarea. Wygląda na to, że:JavaScript - string.replace() tekst obejmujący wiele linii?

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 ~~~~~~~~~~~~~~~ 

Próbuję usunąć z ALTER GO dla każdego użytkownika. Używając replace(), mogę zamienić z ALTER na DISABLE, ale nie wiem, jak dopasować całą drogę do GO (która znajduje się w następnej linii), aby usunąć cały fragment. Myśli?

+0

Czy rozważałeś zastąpienie tekstu za pomocą wyrażeń regularnych? –

+0

Jestem dość okropny z regx, zdecydowanie coś, nad czym muszę popracować. Dzięki za odpowiedź Alex! – mike

Odpowiedz

17

. w regex pasuje do każdego znaku z wyjątkiem\n. W niektórych smakach regex można dodać flagę s, aby pasowała do nich, ale nie w JavaScript.

Zamiast tego można użyć klasy znaków [\s\S], która pasuje do wszystkich białych znaków i wszystkich białych znaków, które są wszystkim. ? po * oznacza, że ​​nie będzie chciwy, w przeciwnym razie będzie pasował między pierwszym ALTER i ostatnim .

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

jsFiddle.