DTube网址解析器正则表达式

时间:2018-10-18 15:46:24

标签: javascript regex

请帮助为d.tube构建正则表达式,以从网址中提取channel_idvideo_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

2 个答案:

答案 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生成的屏幕截图(非常有用的实用程序) enter image description here

尽管此处的解决方案将验证您是否具有有效的“ 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;