2011-03-23 6 views
0

0 개 이상의 URL을 포함 할 수있는 문자열이 있습니다. 문자열의 각 URL을 <a></a>에 싸여있는 해당 URL로 바꿔야합니다. replace() 안에 현재 일치하는 개체에 대한 참조를 가져올 수있는 방법이 있습니까? 예를 들어정규 표현식에 대한 자바 참조

:

var msg = "Go to http://google.com and youtube.com"; 
var regex = /[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi; 

msg.replace(regex, "<a href='"+<blank>+"'></a>") // Where <blank> is a reference to the current matched url 

감사합니다!

+1

http://stackoverflow.com/questions/37684/replace-url -with-html-links-javascript/2166104 # 2166104 당신의 대답이 있습니다. – glomad

+0

위대한 작품! 하지만 난 어떻게 xss를 방지합니까? 난 단지 URL을 링크하고 싶지만, jquery의 .text()와는 작동하지 않을 것이고, .html()은 모든 HTML을 구현할 것입니다. –

답변

4

예. regex backreferences을 사용하십시오. (전체 일이 일치하는 그룹에 넣어하기 위해, 나는 정규 표현식의 시작과 끝에 추가 괄호를 확인할 수 있습니다.)

var msg = "Go to http://google.com and youtube.com"; 
var regex = /([[email protected]:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&\/\/=]*)?)/gi; 

msg.replace(regex, "<a href='$1'>$1</a>") // Where <blank> is a reference to the current matched url 
+2

왜이 투표에 참가 했습니까? 나는이 질문을 이해하지 못했습니까? –

+0

+1 솔루션이 작동합니다. ""http://google.comyoutube.com " – morja

+2

슬래시가 제대로 나오지 않았기 때문에 화재가 발생했을 수 있습니다. 그것을 고치고 반대표 -1로 투표했습니다. –

관련 문제