2012-02-13 4 views
2

[b] 또는 [/ b]의 모든 인스턴스를 <b> 또는 </b>으로 바꾸려면 javascript replace() 함수를 가져와야합니다. 나는 글로벌 태그로이 시도했지만 작동하지 않고 이상한 나오는 : 출력 존재에javascript replace() 복수의 bbcode 인스턴스가 여러 개의 html로 있습니다

document.write(str.replace(/[b]/g,'<b>').replace(/[/b]/g,'</b>')); 

결과 :

[<>]<>la<>la[<>][<>]<>la<>la[<>] 

나는 또한에 첫 번째 부분을 변경 시도 :

[blabla[/[blabla[/ 
:] 이상한 거기에 작품의 종류,하지만
document.write(str.replace(/[[b]]/g,'<b>').replace(/[[/b]]/g,'</b>')); 

지금처럼 ... 모든 곳이야

나는 내가 여기에 누락 분명 뭔가 거기에 아마 알고 ...하지만 ... 어떤 도움을 찾을 수없고 나는 당신에게 XD

답변

4

[, ]/special RegExp characters입니다 영원히 사랑합니다.

  • [a] 의미 : 일치하는 모든 a 문자입니다. [abcd] 의미 : a, b, c, d 중 하나 인 한 문자를 찾습니다. [a-z] 의미 : 모든 문자를 일치시킵니다.
  • /
  • 는 정규식의 시작과 끝을 표시하는 데 사용됩니다.

은 탈출 할 필요가 리터럴 문자를 사용합니다. 또한 수

str = "[b]foo[/b] and [b]bar[/b]" 
str.replace(/\[b\](.+?)\[\/b\]/g,'<b>$1</b>') // <b>foo</b> and <b>bar</b> 

을 :

str.replace(/\[(\/?)b\]/g,'<$1b>') 
// Replaces [b] with <b>, [/b] with </b> 
+0

덕분에, 정식 지적^-^저는 권리로 모두 답변을 선택할 수 있으면 좋겠다! – Elizabeth

+0

@ user1054798 가장 도움이되었던 답변을 수락 할 수 있습니다 (= 문제가 해결되었으므로 명확한 설명이 있어야 함). 이 답변은 질문 **에 게시 된 핵심 질문 **에 대한 답변이어야합니다. 또한 보너스 팁과 같이 실제로 ** 유용한 ** 게시물을 upvote 할 수 있습니다. –

+0

나는 찬성 투표하는 데 필요한 평판을 가지고하지 않은,하지만 나는 곧 내가 그것을 도달 모든 질문에 대해 그렇게하는 것을 목표로 : D 난 그냥 내 요구에 가장 적합한보고, 게시 된 모든 솔루션을 사용하여 좀 더 테스트 할 수 있습니다 ! D 더블 포스트 싶지 않았다 당신의 BB 코드 요소를 중첩하는 경우, 일부 포럼이 귀찮은 ... – Elizabeth

-2

당신은 한 번에 그들을 모두 교체 오프 훨씬 더 좋을 수 있습니다 모두 정규 표현식은 역 참조를 사용하여 병합 할 수 있습니다

str.replace(/\[b\]/g,'<b>').replace(/\[\/b\]/g,'</b>') 

주 상기 한 단계 이동 다중 포맷 코드를 처리 (B, I, U 본 예에서의) 하나의 일반 식 :

str = "[b]foo[/b] and [i]bar[/i]" 
str.replace(/\[([bius])\](.+?)\[\/\1\]/g,'<$1>$2</$1>') 

유효한 표현식 만 처리하고 닫히지 않은 [태그]는 무시하기 때문에이 표현식 ((.+?))은 사용자보다 낫습니다. 특수 문자에 대한 정보를

+0

고려 : 나는 담당자의 증가를보고 @RobW ... –

+0

@BenjaminUdinktenCate : 적어도 정규식 만 사용하여 중첩 된 태그를 구문 분석 할 수는 없습니다. 적어도 재귀 구문이없는 자바 스크립트에서는 유용합니다. 아직도 OP 솔루션의 요구 사항에 대한 솔루션이 "충분히 우수"하다고 생각합니다. 이는 귀사의 사례보다 훨씬 간단합니다. – georg

+0

감사합니다. 나는 (. +?) 부품을 이전에 어딘가에서 보았지만 그들이 무엇을하고 있는지를 알 수 없었다. (나는 그들이 그들이 변경된 것 또는 무언가의 일부라고 생각했다. ... 코드는 완벽하게 작동했고 당신은 나를/거기에 모든 종류의 bbcode에 대한 하나의 작업을해야하는 데 어려움이 있습니다. D 추가 문제가 생겨서 미안하지만, 어쨌든 Enter 키를
으로 바꿀 수있는 방법을 알려주시겠습니까? [견적] 같은 것들이 html로 대체 되었습니까? bius는 단지 q, u, o, t 또는 e를 대체 할 것입니다. 그리고 중첩 된 XD는 정말로 걱정거리가 아닙니다. 이것은 훨씬 간단합니다 : P – Elizabeth

관련 문제