2010-04-04 9 views

답변

17

. 명시 적으로 하지 경기 개행 문자가 없기 때문에이 코드 줄

에 foo는 대체하지 않습니다 이유를 이해할 수 없다 .

이 작동합니다 : 개행 문자가 공백 (\s)로 계산

"foo\r\nbar".replace(/foo[\s\S]+/m, "bar") 

때문이다.

괄호는 foo 주위에 불필요하며 그룹화는 이점이 없습니다.

+0

감사합니다. 나는 몰랐습니다. 루비에서 기본적으로 않습니다. –

+0

아니요. ;) (http://rubular.com/에서 직접 테스트 해보십시오.) – Tomalak

+5

'[\ s \ S]'는'(? :. | \ s)'보다 훨씬 좋은 해결 방법입니다; 이유에 대한이 질문에 대한 Erik Corry의 답변을 참조하십시오. http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 –

19

JavaScript는 도트 올 수정자를 지원하지 않습니다.

"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar") 

/m가 제대로 ^$없이 행동을 만들지 만, .에 영향을주지있다 : 일반적인 교체입니다.

+1

Great.Thank –