2013-02-09 86 views
0

我目前正在通过javascript使用正则表达式来提取YT视频ID。我有一个工作的例子。但不是使用var exaxmpleYoutubeURLs。有没有办法创建一个输入字段,可以将链接复制进来,然后通过ajax显示十一位数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 2013-02-09 05:14:29

+0

@ user2008945是的,这是正确的 – CodingWonders90 2013-02-09 05:24:39

+0

对不起,如果我是愚蠢的,但为什么要使用ajax? – luckystars 2013-02-09 05:28:18

回答

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 2013-02-09 05:35:37

+0

' onchange =“extractLinks()”'会更好,因为即使用户没有更改值,也可能发生模糊 – 2013-02-09 05:36:21