2009-08-19 4 views
0

나는 여러 줄을 Javascript로 대체하려고하는데, IE에서 문제가되고있다. 여기인터넷 익스플로러에서 멀티 라인 js regex 교체

페이스트 빈 : 내가 할 노력하고있어의 http://jsbin.com/olahi/edit

설명 :

<textarea id="editthis"> 
Hello from JS Bin 
Whats up from JS Bin 
Whats 
up from JS Bin 
</textarea > 

그리고 내 JS : 내 JS에서

jQuery.fn.runReplacement= function(expr) { 
    return this.each(function() { 
     this.innerHTML = this.innerHTML 
     .replace(/Hello/ig, "Hey") 
     .replace(/Whats ?\n? ?up/ig, "Hey") 
     ; 
    }); 
}; 

$(function() { 
    $("textarea").runReplacement(); 
}); 

(jQuery를 을 여기에 내 HTML의) 예를 들어, 나는 단지 Hello를 대체하려고하고있다. 그리고 'Whats up'을 'Hey'로 대체하려고한다.

IE에서는 처음 두 줄이 작동하지만 세 번째 (및 네 번째) 줄은 작동하지 않습니다. 크롬과 FF에서는 모든 4 라인이 작동합니다.

IE가 지원하지 않아야하는 이유가 표시되지 않습니다. \ n 내가 뭐 잘못 했어요?

미리 감사드립니다.

모두에게 감사드립니다. IE가/n보다/r/n이 필요하다는 것을 배우는 것이 좋습니다.

IE 나 그 밖의 모든 것이 아닌 브라우저 간 코드 작성을위한 제안.

감사합니다.

답변

0

CR/LF 문자는 IE와 다른 브라우저에서 약간 다릅니다. IE에서는 \ r \ n입니다.

크로스 브라우저 솔루션 :/Whats? \ r? \ n? ? up/

+0

고맙습니다. 크로스 브라우저에서 작동하도록하는 방법에 대한 제안 사항이 있습니까? – Jourkey

+0

업데이트 된 답변보기 –

1

IE6에서 실제로 잘 작동합니다. 그러나 이것은 \ r과 \ n 문자 (IE가 빠져 나갈 수도있는 곳, \ n 대신 \ r 또는 \ n을 보는 곳)와 일치하는 "더 나은"정규 표현식이어야합니다. 공백

str.replace(/Whats\s+up/ig, "Hey") 
+0

죄송합니다. 공간 만이 아닌 새 줄을 구체적으로 일치시켜야합니다. – Jourkey

+0

레코드의 경우 정규 표현식에서 공백 (''), 탭 (\ t), 캐리지 리턴 (\ r), 개행 (\ n)을 포함하는 "공백"과 일치합니다. – jwpage

1

Internet Explorer는 <textarea>에서 줄 바꿈 문자로 \r\n을 사용합니다.

관련 문제