我必须创建一个文本框,只允许你管视频的网址.
要在服务器端处理验证,我使用下面的代码
$rx = '~
^(?:https?://)? # Optional protocol
(?:www\.)? # Optional subdomain
(?:youtube\.com|youtu\.be) # Mandatory domain name
/watch\?v=([^&]+) # URI with video id as capture group 1
~x';
$has_match = preg_match($rx, $url, $matches);
Run Code Online (Sandbox Code Playgroud)
我正在为客户端验证寻找相同的解决方案.我在<input type="url"> 这里找到了 ,但它似乎只适用于html5浏览器.
是否可以使用文本框进行客户端验证,以便与所有浏览器兼容?
谢谢
我正在使用此正则表达式来验证youtube网址.
^http:\/\/(?:www\.)?youtube.com\/watch\?(?=.*v=\w+)(?:\S+)?$
Run Code Online (Sandbox Code Playgroud)
它很棒.
但我有一个问题.
如果用户输入http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports,则可以正常使用
现在我想避免这种情况
http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sportshttp://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sportshttp://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports
Run Code Online (Sandbox Code Playgroud)
多次粘贴相同的URL(在我们的例子中是三次).对于此正则表达式,它也是有效的YouTube地址.
我正在寻找一种解决方法.
如何使用 dart regex 从视频 URL 中提取 YouTube 视频 ID?
示例网址
Run Code Online (Sandbox Code Playgroud)https://www.youtube.com/watch?v=SEkUienM2oY&t=1265s
或者
Run Code Online (Sandbox Code Playgroud)https://m.youtube.com/watch?v=SEkUienM2oY&t=1265s
返回
Run Code Online (Sandbox Code Playgroud)SEkUienM2oY&t=1265s
它为我工作
String getVideoID(String url) {
url = url.replaceAll("https://www.youtube.com/watch?v=", "");
url = url.replaceAll("https://m.youtube.com/watch?v=", "");
return url;
}
Run Code Online (Sandbox Code Playgroud)
但是如何用正则表达式做到这一点?