Пожалуйста, помогите построить регулярное выражение для d.tube извлечь channel_id
и video_id
из URL
Возможны следующие URL-адреса
https://d.tube/v/channel_id/video_id
https://d.tube/#!/v/channel_id/video_id
https://emb.d.tube/#!/channel_id/video_id
Я написал комментарий, чтобы объяснить свою точку зрения, но вот две (возможные!) Разные версии того, что вы хотели бы:
https:\/\/(?:\w+\.)?d.tube\/.*?\/([^\/]*)\/([^\/]*)\n
И тогда это будет извлекать channel_id channel_id' and the
video_id из URL: ПРИМЕЧАНИЕ. Этот ответ частично скопирован из этого ответа на переполнение стека: как вы получаете доступ к сопоставленным группам в регулярном выражении JavaScript?
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 (довольно полезная утилита)
Хотя это решение здесь проверит, что у вас есть действительный URL-адрес "d.tube"
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;
Это должно учесть их две группы: https:\/\/(?:emb)?\.?d.tube\/v?(?:#!)?\/?v?\/?(\w+)\/(\w+)
Сначала он отображает https
затем две косые черты, которые требуют символа \
escape.
По желанию, он получает emb
, то необязательно .
затем d.tube
, необязательно /v
, необязательно #!
, необязательно другой /
, необязательно другой v
и /
затем две группы захвата, которые принимают буквенно-цифровые символы, разделенные на /
.
channel_id
и фразыvideo_id
я не могу сделать вывод , что вы хотите сделать. Одна версия будет извлекать канал и идентификатор видео, но другая версия будет проверить , что фразы (channel_id
иvideo_id
) всегда присутствуют. Что вы хотите получить от своего рег-экс?