之前已经问过这个问题,我发现了这个问题:
但我正在寻找一些略有不同的东西.
我需要匹配Youtube ID本身兼容所有可能的youtube链接格式.不仅仅是从youtube.com开始.
例如:
http://www.youtube.com/watch?v=-wtIMTCHWuI
http://www.youtube.com/v/-wtIMTCHWuI?version=3&autohide=1
http://youtu.be/-wtIMTCHWuI
http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D-wtIMTCHWuI&format=json
http://s.ytimg.com/yt/favicon-wtIMTCHWuI.ico
http://i2.ytimg.com/vi/-wtIMTCHWuI/hqdefault.jpg
是否有一个聪明的策略,我可以用来匹配-wtIMTCHWuI兼容所有这些格式的视频ID .我正在考虑字符计数和匹配= ? / . &字符.
我在JScript中遇到过一段代码:
RegExp.$1
Run Code Online (Sandbox Code Playgroud)
有人知道它的作用吗?
如果我自己输出它,我甚至没有得到任何错误.
我在http://www.w3schools.com/jsref/jsref_obj_regexp.asp上找不到任何参考资料.
在这段代码之前有一个正则表达式搜索,我怀疑它与它有关:
.search(/^__product\[(.+)\]$/)
Run Code Online (Sandbox Code Playgroud) 我希望用户提交youtube网址.如果youtube链接正确,我想"动态"检查,如果检查成功,则将输入旁边的文本更改为OK.
我设法做了验证功能,但它不起作用.我究竟做错了什么?
UPDATE
它仍然无法正常工作,当URL不正确时应该说不正确,而在输入时URL正确时可以正常:
$('form #youtube').bind("change keyup input", validYT());
function validYT()
{
var url = $('form #youtube').val();
var p = /^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/;
if (url.match(p)) {
$('#ytInfo').removeClass().addClass('fieldok ').text('OK');
return true
}
else
{
$('#ytInfo').removeClass().addClass('fieldok ').text('NOT OK');
return false
}
}
Run Code Online (Sandbox Code Playgroud)
HTML:
youtubelink<BR>
<input type="text" name="youtube" id ="youtube" value="" /><div id="ytlInfo">dd</div>
Run Code Online (Sandbox Code Playgroud)