【发布时间】:2017-12-01 18:44:59
【问题描述】:
我想验证用户为 Youtube 和 Vimeo
粘贴的url
例如:
m.youtube.com, youtu.be, youtube.com, vimeo.com
还想从中提取video id's
我的代码:
if (link.contains("youtu")) {
String youtubeRegex = "^(http(s)??\\:\\/\\/)?((www\\.)|(m\\.))?((youtube\\.com\\/watch\\?v=)|(youtu.be\\/))([a-zA-Z0-9\\-_])+";
Pattern pattern = Pattern.compile(youtubeRegex);
Matcher matcher = pattern.matcher(link);
if (matcher.find()) {
isValid = true;
} else {
isValid = false;
}
} else if (link.contains("vimeo")) {
String vimeoRegex = "^https:\\/\\/?vimeo\\.com\\/(clip\\:)?(\\d+).*$";
Pattern pattern = Pattern.compile(vimeoRegex);
Matcher matcher = pattern.matcher(link);
if (matcher.find()) {
isValid = true;
} else {
isValid = false;
}
}
这个正则表达式不能正常工作。它甚至接受没有https ot http的链接
【问题讨论】:
-
您的第一个正则表达式将 http 部分包含在捕获组
()中,后跟?,这使其成为可选的。所以如果你不想要那些没有协议的,我建议删除?
标签: android regex url youtube vimeo