2013-01-10 1 views
0

stackexchange는 따옴표를 사용하는 방식을 좋아하지만,이를 사이트에 추가하려고 시도했지만 여러 줄, 한 줄만 사용할 수는 없습니다. 여러 줄을 작성하려면 무엇을 변경해야합니까? 여기블록 인용 서식 지정

내가 현재 사용하고 무엇을 :

val = val.replace(/^>(.+?)($|\n)/ig, "<blockquote>$1</blockquote>"); 


편집
내가 다른 스타일 가기로 결정.

val = val.replace(/""([\s\S]*.+?)""/igm, "<blockquote>$1</blockquote>"); 
+0

는 http://stackoverflow.com/questions/1068280/javascript-regex-multiline-flag-doesnt-work – glomad

답변

0

정규식에서이 작업을 포기했습니다.

var a = '>abc\n>def\n>ghi'.split(/\n/); // [">abc", ">def", ">ghi"] 

var previousInBlock = false; 
var currentInBlock = false; 
var nextInBlock = false; 

for(var i = 0; i < a.length; i++) { 

    previousInBlock = currentInBlock; 
    currentInBlock = a[i].indexOf(">") === 0; 
    nextInBlock = (i + 1) < a.length ? a[i+1].indexOf(">") === 0 : false; 

    if (currentInBlock) { 
     a[i] = a[i].slice(1); 

     if(!previousInBlock) { 
      a[i] = "<blockquote>" + a[i]; 
     } 

     if (!nextInBlock) { 
      a[i] = a[i] + "</blockquote>"; 
     } 
    } 
} 

a.join("\n"); 

위 코드는 여러 개의 블록 인용 부호를 처리 할 수 ​​있습니다.

+0

이 아니 것을 구경하세요 2 개의 분리 된 블록 인용 부호를 만든다. –

+0

이전 답변과 동일한 기능을 수행하지 않습니까? –

+0

오. 방금 가져 왔어. 죄송합니다 그냥 바보되고 – Bruno

0

교체하는 대신 각 줄을 일치시킨 다음 일치하는 줄을 하나의 문자열로 결합하십시오. 이 같은

뭔가 :

var val = '>abc\n>def\n>ghi', 
    regex = /(?:^>)(.+)(?:$|\n)/img, 
    match = '', quote = []; 

while((match = regex.exec(val)) !== null){ 
    quote.push(match[1]); 
} 

val = '<blockquote>'+quote.join('<br/>')+'</blockquote>'; 

DEMO : http://jsfiddle.net/k7DVu/

+0

그 작동합니다! –

+0

@ RyanNaddy : 멋지다! 다행스럽게도 도움이 될 수 있습니다 :-) –

+0

블록 쿼트의 여러 세트에 대해서는 작동하지 않습니다 –