Javascript - текст string.replace (), охватывающий несколько строк? - PullRequest
6 голосов
/ 04 мая 2011

Допустим, у меня есть текст (не 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 (который находится на следующей строке), чтобы он удалял весь фрагмент.Мысли? * * 1004

1 Ответ

17 голосов
/ 04 мая 2011

. в регулярном выражении соответствует каждому символу , кроме \n. В некоторых вариантах регулярных выражений вы можете добавить флаг s, чтобы он соответствовал им, но не в Javascript.

Вместо этого вы можете использовать класс символов [\s\S], который соответствует всем пробелам и всем не пробелам, что и есть все. ? после * означает, что он не будет жадным, в противном случае он будет совпадать между первым ALTER и последним GO.

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

jsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...