2010-11-22 97 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