2011-09-19 10 views
3

는 <textarea></textarea> 태그

var s = ' hi there \n <textarea> hello \n there </texarea> hi \n hi'; 

사람은 단지 외부의 \n 문자에 영향을 미칠 것이다 <br/>\n으로 교체하는 방법을 알고있는 자바 스크립트 문자열을 가진 내부
하지있는 모든 모든 \ n을 교체 텍스트 영역?
결과이 있어야한다 : 사업부에서

'hi there <br/> <textarea> hello \n there </texarea> hi <br/> hi'; 
+1

필수 읽기 : http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

+0

HTML을 어떻게 만듭니 까? 어쩌면 그것은 처음부터 부러진 것을 사후 처리하는 것보다 쉽다. – Tomalak

+0

@Gaby 일명 G. Petrioli 내가 본 것은 내 물건이 다르다고 생각했다. – Omu

답변

5

을 조작 할 수 있습니다. 그런 다음 replace을 전역 플래그가있는 정규식을 사용하여 모든 줄 바꿈을 <br/>으로 바꿉니다. 여러 텍스트 영역을 지원해야하는 경우

var s = s.replace(/\n/g, "<br//>"); 
//Replace all newline characters by "<br//>" 

var textareaContent = s.match(/<textarea>[\s\S]+?<\/textarea>/i); 
//Preparation: Selects a textarea 

var newString = textareaContent[0].replace(/<br\/\/>/g, "\n"); 
//Preparation: replaces all "<br//>" inside the textarea by "\n" (newline feed) 

s = s.replace(textareaContent[0], newString); 
//Replaces the textarea inside the string by the new textarea (= including "\n") 

var desiredResult = s.replace(/<br\/\/>/g, "<br/>"); 
//Replaces the remaining "<br//>" (the ones outside the textarea) by "<br/>" 

, 당신은 정규 표현식 개체의 exec 방법과 연계하여 for 루프를 사용할 수 있습니다.

+0

어떻게'/ /'텍스트 영역의 내용과 일치합니까? – henko

+0

'\ s'은 모든 공백 문자와 일치합니다. '\ S' (대문자)는 모든 흰색 문자가 아닌 문자와 일치합니다. 따라서 [\ S \ s]는 모든 문자 ('.'와는 달리 개행 문자 포함)와 일치합니다. '[\ S \ s] +? '는 "RE의 다음 부분이 일치 할 수 있도록 충분한 문자를 찾습니다"를 의미합니다. 물음표를 사용하지 않으면'[\ s \ S] +'에 ""이 포함됩니다. –

+0

그러면 오타가있을 수 있습니까? 양쪽 모두'\ s'는 나에게 소문자 인 것처럼 보입니다. – henko

0

넣어 모든 것을 당신이 스팬에서 원하는 \ n 개의 태그를 넣어. 따라서 첫 번째 \ n은 첫 번째 자식이되고 두 번째 \ n은 텍스트 영역 외부의 마지막 자식이됩니다.

그런 다음 당신은 텍스트 영역을 선택 match를 사용할 수 있습니다 사업부의 처음과 마지막 아이를 호출하고 하나의 텍스트 영역의 경우 HTML

var s = ' hi there <span class= "changethis">\n</span> <textarea> hello \n there </texarea> hi <span class= "changethis">\n</span> hi'; 
0

당신이 텍스트에서
태그로 모든 \ n 문자를 대체합니다 라인

var text = text.replace(/\n/g, '<br/>'); 

를 사용할 수 있습니다.