2011-05-04 7 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에서 삭제하려고합니다. replace()를 사용하면 ALTER를 DISABLE로 바꿀 수 있지만 GO (다음 줄에 있음)와 일치하는 방법을 파악할 수 없으므로 전체 청크가 제거됩니다. 생각?

+0

정규식을 사용하여 텍스트를 바꾸는 것이 좋습니다. –

+0

나는 regx에서 꽤 무서운데, 분명히 내가해야 할 일이있다. Alex에게 감사드립니다! – mike

답변

17

.을 제외한 모든 문자와 일치합니다.\n은 예외입니다. 일부 정규식 맛에서 s 플래그를 추가하여 Javascript가 아닌 일치시킬 수 있습니다.

대신 공백 문자와 공백이 아닌 모든 문자 (모든 문자)와 일치하는 [\s\S] 문자 클래스를 사용할 수 있습니다. ?* 뒤에 오는 것은 욕심이 없다는 것을 의미하며, 그렇지 않으면 첫 번째 ALTER과 마지막 GO 사이에 일치합니다.

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

jsFiddle.

관련 문제