请帮助为d.tube构建正则表达式,以从网址中提取channel_id
和video_id
可能包含以下网址
https://d.tube/v/channel_id/video_id
https://d.tube/#!/v/channel_id/video_id
https://emb.d.tube/#!/channel_id/video_id
答案 0 :(得分:1)
这应该将它们分为两组:https:\/\/(?:emb)?\.?d.tube\/v?(?:#!)?\/?v?\/?(\w+)\/(\w+)
首先匹配https
,然后匹配两个正斜杠,这两个斜杠需要\
换码符。
(可选)它得到emb
,然后是.
,然后是d.tube
,然后是/v
,然后是#!
,然后是另一个/
, (可选)另外一个v
和/
,然后是两个捕获组,这些捕获组采用字母数字字符,并由/
分隔。
答案 1 :(得分:1)
我发表了评论以解释我的观点,但这是您想要的两个(可能!)不同版本:
https:\/\/(?:\w+\.)?d.tube\/.*?\/([^\/]*)\/([^\/]*)\n
然后这将从网址中提取channel_id' and the
video_id`:注意::此答案是 部分从复制过来的堆栈溢出答案:How do you access the matched groups in a JavaScript regular expression?
var myString = myURL;
var myRegexp = /https:\/\/(?:\w+\.)?d.tube\/.*?\/([^\/]*)\/([^\/]*)\n/g;
var match = myRegexp.exec(myString);
console.log("Channel ID: " + match[0] + "\n" + "Video ID:" + match[1] + "\n");
这是http://regexr.com生成的屏幕截图(非常有用的实用程序)
尽管此处的解决方案将验证您是否具有有效的“ d.tube” URL
https:\/\/(?:\w+\.)?d.tube\/.*?\/channel_id/video_id\n
var myString = myURL;
var myRegexp = /https:\/\/(?:\w+\.)?d.tube\/.*?\/channel_id/video_id\n/;
var match = myRegexp.exec(myString);
var isMatch = match != null;