2017-04-19 1 views
0

내 웹 사이트에 HTML 코드를 텍스트로 표시하고 싶습니다. 내 HTML에서 샘플 텍스트를 다음과 같습니다 보여주는JQuery : Regex-matches에 스타일 추가

<div id="test"> 
    &lt;p&gt;Hello&lt;/p&gt; <br /> 
    &lt;p&gt;Hello2&lt;/p&gt; 
</div> 

: 내 웹 사이트에

<p>Hello</p> 
<p>Hello2</p> 

.

이제 태그의 색상을 변경하고 싶습니다. 나는 인터넷에서 그 문장의 스타일을 바꾸기 위해 클래스와 함께 동일한 텍스트로 RegExp를 대체한다는 아이디어를 발견했다.

나는 JQuery와에 다음과 같은 시도 :

$(document).ready(function() 
{ 
    var oldHtml = $("#test").html(); 
    var newHtml = oldHtml.replace(new RegExp("(&lt;){1}.*(&gt){1};","g"), "<span class='highlight'>$1</span>"); 
    $("#test").html(newHtml); 
}); 

그리고 가지고 다음과 같은 : 내가 잘못 뭐하는 거지

< 
< 

?

+0

코드를'pre' 또는 유사하게 넣고 구문 강조를 위해 라이브러리를 사용하는 것이 좋습니다. 자신 만의 롤링은 많은 작업이 될 것입니다. 예를 들어 그렇게 생각하십시오. – simbabque

답변

1

캡처 그룹의 위치가 잘못되었습니다. 여는 괄호를 $1으로 캡처하고 닫는 대괄호를 $2으로 캡처합니다. 사용하지 마십시오.

(&lt;){1}.*(&gt){1}; 

또한 한정사가 필요하지 않습니다.

&lt;(.*?)&gt; 

이 패턴과 동일한 대체 문자로 작동해야합니다. *? 수량 한정 기호는 욕심을 먹지 않으므로 가능한 한 일찍 중지합니다.

HTML을 정규식으로 구문 분석하는 것은 나쁜 생각입니다. HTML의 일부가 이스케이프 처리되는 경우에도 여전히 규칙적인 언어는 아닙니다. 결국에는 효과가 없을 것입니다. 대신 파서를 사용하십시오. 또는 당신의 유스 케이스를 위해서, 간단하게 많은 구문 중 하나를 사용하여 구문 강조 라이브러리를 사용하십시오.

+0

나는 내 휴대폰에서 이것을 wrot. 패턴에 타이핑 오류가있을 수 있습니다. – simbabque

+0

네, 답변 해 주셔서 감사합니다. 지금 라이브러리를 강조하는 구문을 사용하고 있습니다 :) –