Javascript REGEX:需要从嵌入URL中检索ID以及开始和结束时间
Javascript REGEX: need to retrieve the ID as well as start and end time from embed URL
以下是我将要使用的url结构示例(忽略电子视频的时代:)
http://www.youtube.com/embed/ABCumLrphFA?&开始=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;
}
如果你能帮我填空,那就太棒了。我已经盯着regex文档看了一段时间,只是越来越困惑。
这个其他堆栈溢出答案可能会对您有所帮助。我用了下面彼得·莫滕森的答案。
- 在JavaScript中获取查询字符串值
要获得实际的YouTube Id,您可以使用以下正则表达式:
http:'/'/www.youtube.com'/embed'/(.{11})
该正则表达式将返回括号中的值。你可以在这里测试:
- http://www.pagecolumn.com/tool/regtest.htm
样本代码:
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));
1
/http:'/'/www'.youtube'.com'/embed'/([^?]+)/
2
/http:'/'/www'.youtube'.com'/embed'/[^?]+.*[?&]start=('d+)(?:&|$)/
3
/http:'/'/www'.youtube'.com'/embed'/[^?]+.*[?&]end=('d+)(?:&|$)/
只有当你知道你的URL看起来和你给出的完全一样时,这才会起作用(没有额外的查询参数;开始和结束总是按这个顺序;没有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
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));
检索id
url.match(/embed'/(.*)'?/)
检索URL参数(开始和结束)的最佳方法是使用Dojo执行类似GetQuerystring的操作。然后可以使用以下方法检索开始和结束
var qs = getUrlParams();
console.log("start is " + qs.start + " and end is " + qs.end )
相关文章:
- MongoDB 2.0.0 驱动程序,按 ID 检索记录时出现问题
- 如何从链接中检索 ID
- 在按键时检索文本区域的 ID
- 正在根据ID从数组中检索对象
- 如何使用地点ID从Google Places JS API检索地点详细信息
- Javascript REGEX:需要从嵌入URL中检索ID以及开始和结束时间
- 如何在没有任何元素id的情况下检索表中的文本内容
- 创建一个bookmarklet,可以检索文本框的所有最大长度,然后在表中打印id和最大长度
- 如何将下拉列表中检索到的值的id从数据库发送到php文件
- Ajax - 在“成功”之后转到另一个页面,从那里的URL中检索用户ID
- 将 ID 添加到画布绘图以供以后检索
- Angular JS:根据 id 检索 json 数据
- 如何检索元素的 ID 名称
- Javascript函数用于按Id检索不同的html元素
- 如何使用angularfire通过id检索数据
- 在Ionic 2中按id检索DOM元素
- 通过子子文档id检索子子文档
- 将所选列表视图项的id检索到php页面java脚本et jquery中
- 由于什么原因,我不能通过ID检索元素,一旦爬到他的父元素
- jQuery:如何通过连接ID检索元素