2009-06-17 8 views
4

를 교체 처리 I 다음 문자열이 있습니다여러 자바 스크립트가 일치

This *is* a *test*! 

내가 굵은 원하는을 * 문자로 둘러싸인 단어 (그래서 "입니다"및 예 "테스트").

나는 다음과 같은 자바 스크립트 코드가 있습니다

This <b>is* a *test</b>! 

가 어떻게이 작업을 수행하기 위해 패턴이나 기본 코드를 변경할 수 있습니다 : 문자열이 반환 될 때

var data = "This *is* a *test*!"; 
return data.replace(/\*(.*)\*/g, <b>$1</b>); 

, 나는 다음을 얻을 수를 내가 원하는 방식으로 교체 할까? 그래서 내 HTML 엉망

답변

5

... 당신은 - 연산자 * 표시 후를 추가하여 패턴이 아닌 욕심해야

var result = "This *is* a *test*!".replace(/\*(.*?)\*/gi, "<b>$1</b>"); 
+1

이 예제에서'i' 수정자가 필요하지 않습니다.'. *'는 대문자 나 소문자와 모두 일치 할 것이고'\ *'는 대소 문자의 영향을받지 않습니다. – redbmk

+0

XSS 공격을 피하기 위해서는 무거운 화이트리스트 삭제가 필요하거나 HTML 문자열을 사용하지 않는 기술 (예 : DOM 사용)이 필요하기 때문에 텍스트가 사용자 (시스템이 아닌 사용자)가 제공하는 경우 훨씬 더 어렵습니다. 대신 API). – robocat

관련 문제