2013-02-09 5 views
0

현재 javascript를 통해 regex를 사용하여 YT 비디오 ID를 추출하고 있습니다. 나는 실천 사례가있다. 하지만 대신 var exaxmpleYoutubeURLs을 사용하십시오. 링크를 복사 할 수있는 입력 필드를 만드는 방법이 있습니까? 그리고 Ajax를 통해 11 자리 숫자 ID을 표시합니까? 여기에 내 JSFIDDLE입력 필드에서 값을 가져와 ID를 추출

var youtubePattern = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/ig; 

var exmpleYouTubeURLs = [ 
    "http://www.youtube.com/embed/NLqAF9hrVbY", 
]; 

// Extract the YouTube ID 
function linkifyYouTubeURLs(text) { 
    return text.replace(youtubePattern, '$1'); 
} 

for(i=0; i < exmpleYouTubeURLs.length; i++) { 
    document.writeln(i + ". " + linkifyYouTubeURLs(exmpleYouTubeURLs[i]) + "<br>"); 
} 
+0

url 배열을 수동으로 생성하는 대신 입력 상자에서 가져 오려고합니다. 내가 맞습니까? – luckystars

+0

@ user2008945 예, 맞습니다 – CodingWonders90

+0

죄송합니다. 내가 바보가 되겠지만 왜 아약스를 사용합니까? – luckystars

답변

1

원하십니까?

<textarea id="links"></textarea> 
<input type="button" onclick="extractLinks()" value="Extract" /> 
<div id="outputDiv"></div> 

<script> 
    function extractLinks() { 

     var youtubePattern = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/ig; 

     var exmpleYouTubeURLs = document.getElementById('links').value.split('\n'); 
     var output = document.getElementById('outputDiv'); 

     function linkifyYouTubeURLs(text) { 
      return text.replace(youtubePattern, '$1'); 
     } 

     output.innerHTML = ''; 
     for(i=0; i < exmpleYouTubeURLs.length; i++) { 
      output.innerHTML += i + ". " + linkifyYouTubeURLs(exmpleYouTubeURLs[i]) + "<br >"; 
     } 
    } 
</script> 
+0

인 경우 또는이 버튼을 클릭하지 않으려 고 시도해 볼 수 있습니다. luckystars

+0

' 사용자가 값을 변경하지 않아도 흐림이 발생할 수 있으므로 onchange = "extractLinks()"는 더 좋을 것입니다. –

관련 문제