Javascript — string.replace() текст, занимающий несколько строк?

#javascript #regex #replace

#javascript #регулярное выражение #заменить

Вопрос:

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

Комментарии:

1. рассматривали ли вы возможность замены текста с помощью регулярных выражений?

2. Я довольно плохо разбираюсь в regx, определенно это то, над чем мне нужно поработать. Спасибо за ответ, Алекс!

Ответ №1:

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

Вместо этого вы можете использовать [sS] класс character, который соответствует всем пробелам и всем, не являющимся пробелами, то есть всему. ? После * означает, что оно не будет жадным, иначе оно будет соответствовать первому ALTER и последнему GO .

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

jsFiddle.