2016-06-23 1 views
0

JavaScript를 사용하여 웹 페이지의 YouTube 링크를 바꾸려고합니다. 이 정규식은 공백으로 구분 된 비디오를 찾지 만 캐리지 리턴을 찾지 않습니다. 캐리지 리턴은 내 사이트의 <br>으로 변환됩니다.정규식 캐리지 리턴을 사용하여 youtube URL 바꾸기 <br></br>

findReplaceYoutube(); 
 

 
function findReplaceYoutube() { 
 
    var youregx = /[^<br>]https:\/\/www\.youtube\.com\/watch\?v=([^//\\\. <>]+)|[^<br>]http:\/\/www\.youtube\.com\/watch\?v=([^//\\\. <>]+)/igm; 
 
    var content = document.getElementsByClassName("new_thread_message_preview"); 
 
    var contentsize = content.length; 
 
    var match; 
 
    
 
    for (var i = 0; i < contentsize; i++) { 
 
     match = youregx.exec(content[i].innerHTML); 
 
     while (match != null) { 
 
      alert(match[0]); 
 
      match = youregx.exec(content[i].innerHTML); 
 
     } 
 
    } 
 
}
<div class="new_thread_message_preview"> 
 
https://www.youtube.com/watch?v=Ui1sHwYp_Ys https://www.youtube.com/watch?v=Ui1sHwYp_Ys<br> 
 
http://www.yout­ube.com/watch?v=Ui1sHwYp_Ys­ http://www.youtube.com/watch?v=Ui1sHwYp_Ys<br><br>0.00020694732666016 
 
</div>

이 모든 링크를 찾을 수 점점 어떤 도움?

+1

참고로, 귀하의 예제 링크'에서 HTTP : //www.youtube.com/watch V = Ui1sHwYp_Ys' 당신은이 일치하지 않게하는 텍스트의 보이지 않는 유니 코드 문자. –

답변

2

사용 :

/http(s)?:\/\/www\.youtube\.com\/watch\?v=([^\\\. <>]+)/ig 

그것은 HTTPHTTPS을 포함하도록 선택 항목 (s)? (click here for info)를 사용하여 당신의 간단한 버전이 있습니다. 나는 그 밖의 모든 것들을 동일하게 유지했으며,/g 플래그 덕분에 그것들 모두에서 작동합니다.

http : // 링크에는 일치하지 않는 정규식을 중지하는 보이지 않는 유니 코드 문자가 있습니다. 문자를 제거하려면 YouTube 링크를 다시 작성하면 일치하는 것을 볼 수 있습니다.

또한 여러 줄 플래그 /m을 제거 했으므로 예제에 필요하지 않습니다. 예를 들어 /i도 제거 할 수 있습니다.

현재 작업에서 볼 수 있습니다

findReplaceYoutube(); 
 

 
function findReplaceYoutube() { 
 
    var youregx = /http(s)?:\/\/www\.youtube\.com\/watch\?v=([^\\\. <>]+)/ig; 
 
    var content = document.getElementsByClassName("new_thread_message_preview"); 
 
    var contentsize = content.length; 
 
    var match; 
 
    
 
    for (let i = 0; i < contentsize; i++) { 
 
     match = youregx.exec(content[i].innerHTML); 
 
     
 
     while (match != null) { 
 
      alert(match[0]); 
 
      match = youregx.exec(content[i].innerHTML); 
 
     } 
 
    } 
 
}
<div class="new_thread_message_preview"> 
 
https://www.youtube.com/watch?v=Ui1sHwYp_Ys https://www.youtube.com/watch?v=Ui1sHwYp_Ys<br> 
 
http://www.youtube.com/watch?v=Ui1sHwYp_Ys http://www.youtube.com/watch?v=Ui1sHwYp_Ys<br><br>0.00020694732666016 
 
</div>

+0

Regexpal (링크 텍스트 정리, 유니 코드 제거) : http://www.regexpal.com/?fam=95171 –

+0

도움을 주셔서 감사합니다. – Madao

+0

문제 없습니다. 나는 그 코드를 SO에 포함시키기 위해 나의 대답을 편집했고,'/ m'과'/ i'에 대한 간단한 설명을 한 번해볼 것이다. –

관련 문제