Javascript - string.replace()文本跨越多行?

时间:2011-05-04 14:09:31

标签: javascript regex replace

假设我有文字(不是HTML),我是从文本区域拉出来的。它看起来像:

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(在下一行),以便它删除整个块。想法?

1 个答案:

答案 0 :(得分:17)

正则表达式中的

.匹配除 \n之外的每个字符。在一些正则表达式中,您可以添加s标志以使其与它们匹配,但不能在Javascript中。

相反,你可以使用[\s\S]字符类,它匹配所有空格和所有非空格,这就是一切。 ?后的*表示不会贪婪,否则会在第一个ALTER和最后一个GO之间匹配。

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

jsFiddle