2010-11-22 85 views
2

這是我的代碼:的Youtube鏈接不匹配的正則表達式正確

$(document).ready(function(){ 

    var valid_url = new RegExp('http://[www\.]?youtube.com/watch\?v=[a-zA-Z0-9_-]*', ''); 

    $('a').each(function(){ 

     // Check if it's a valid Youtube URL 
     var link = $(this).attr('href'); 
     if(valid_url.test(link)){ 
      alert("valid"); 
     } 

    }); 

}); 

但它似乎並不正確匹配的Youtube的URL。我認爲這是我試圖用正則表達式匹配它的方式。我已經用多種方法測試了正則表達式,這確實是正確的,但我並不熟悉Javascript中使用正則表達式,因此可能會錯誤地使用正則表達式。

任何幫助表示讚賞,謝謝。

回答

3

圍繞www.而不是方括號使用括號。方括號用於字符類。 [www\.][w.]相同,意思是「匹配一個w或文字.」,不完全符合您的要求。

另外,你在正則表達式結尾處的文字短劃線需要被轉義。

http://(www\.)?youtube.com/watch\?v=[a-zA-Z0-9_\-]* 
+0

這只是使該字符組成爲一個捕獲組。爲什麼要這樣做? – Alex 2010-11-22 04:23:40

+0

@Alex我假設,因爲作者希望能夠使'www \ .'字符可選。 – 2010-11-22 04:27:54