2011-05-04 37 views
6

比方說,我有文本(而不是HTML),我從文本區拉。它看起來像:Javascript - string.replace()文本跨越多行?

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

我想從每個用戶刪除從ALTER到GO。使用replace(),我可以將ALTER替換爲DISABLE,但我無法完全弄清楚如何匹配GO(它位於下一行),這樣它就可以刪除整個塊。思考?

+0

您是否考慮使用正則表達式替換文本? – 2011-05-04 14:11:49

+0

我非常可怕的regx's,絕對是我需要工作的東西。感謝Alex的回答! – mike 2011-05-04 14:14:42

回答

17

.在正則表達式中匹配每個字符除了\n。在一些正則表達式中,您可以添加s標誌以使其匹配,但不能使用Javascript。

相反,您可以使用[\s\S]字符類,它匹配所有空白和所有非空白,這就是一切。 *之後的?表示它不會貪婪,否則它會在第一個ALTER和最後一個GO之間匹配。

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

jsFiddle