以下是我将要使用的网址结构示例(忽略电子视频的年龄:))
http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50
基本上我希望能够获取视频ID,所选择的开始时间(20)和结束所选时间(50),并将它们保存为遵循上述模式的任何URL的变量。
这样一个简单的设置就是:
var url = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'
// get youtube id
function youtubeid(url) {
var ytid = url.match(dont know);
ytid = ytid[1];
return ytid;
}
// get youtube start time
function youtubeStart(url) {
var ytStart = url.match(dont know);
ytStart=ytStart[1];
return ytStart;
}
// get youtube end time
function youtubeEnd(url) {
var ytEnd = url.match(dont know);
ytEnd=ytEnd[1];
return ytEnd;
}
如果你能帮助我填补最令人惊讶的空白。我一直在盯着正则表达式文档一段时间,而且越来越困惑。
答案 0 :(得分:0)
检索ID
url.match(/embed\/(.*)\?/)
检索网址参数(开始和结束)的最佳方法是执行Get Querystring with Dojo之类的操作然后您可以使用以下内容检索开始和结束
var qs = getUrlParams();
console.log("start is " + qs.start + " and end is " + qs.end )
答案 1 :(得分:0)
1
/http:\/\/www\.youtube\.com\/embed\/([^?]+)/
2
/http:\/\/www\.youtube\.com\/embed\/[^?]+.*[?&]start=(\d+)(?:&|$)/
3
/http:\/\/www\.youtube\.com\/embed\/[^?]+.*[?&]end=(\d+)(?:&|$)/
答案 2 :(得分:0)
此其他Stack Overflow答案可能会对您有所帮助。我在下面使用了Peter Mortensen的答案。
要获取实际的YouTube ID,您可以使用此正则表达式:
http:\/\/www.youtube.com\/embed\/(.{11})
该正则表达式将返回括号中的值。你可以在这里测试一下:
示例代码:
var url = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'
// get youtube id
function youtubeid(url) {
var ytid = url.match(/http:\/\/www.youtube.com\/embed\/(.{11})/);
ytid = ytid[1];
return ytid;
}
alert(youtubeid(url));
function getParameterByName(name, url) {
var match = RegExp('[?&]' + name + '=([^&]*)')
.exec(url);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
alert(getParameterByName('start', url));
alert(getParameterByName('end', url));
答案 3 :(得分:0)
只有当您知道您的网址完全与您提供的网址完全相同时才会有效(无需额外的查询参数;始终按此顺序开始和结束;不使用HTTPS等)。但是你可以立刻得到它们:
js> str = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'
http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50
js> rxp = /http:\/\/www.youtube.com\/embed\/(.*)\?&start=(\d+)?&end=(\d+)?/
/http:\/\/www.youtube.com\/embed\/(.*)\?&start=(\d+)?&end=(\d+)?/
js> result = rxp.exec(str)
http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50,ABCumLrphFA,20,50
js> result[0]
http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50
js> result[1]
ABCumLrphFA
js> result[2]
20
js> result[3]
50
我相信可以编写一个可以应对我上面提到的所有怪癖的正则表达式,但它更加丑陋并且让它更难理解。无论如何 - 希望这有帮助!
另请参阅:JavaScript Regex Escape Sequences和JavaScript Regex Methods
答案 4 :(得分:0)
var url = "http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50";
// get youtube id
function youtubeid(url) {
q = url.substring(url.lastIndexOf("/")+1);
var ytid = q.substring(q.lastIndexOf("?"), -1);
return ytid;
}
// get youtube start time
function youtubeStart(url) {
q = url.substring(url.lastIndexOf("/")+1);
var ytStart = q.substring(q.indexOf("&start")+7,q.indexOf("&end"));
return ytStart;
}
// get youtube end time
function youtubeEnd(url) {
q = url.substring(url.lastIndexOf("/")+1);
var ytEnd = q.substring(q.indexOf("&end")+5);
return ytEnd;
}
console.log(youtubeid(url));
console.log(youtubeStart(url));
console.log(youtubeEnd(url));