Javascript регулярное выражение соответствует только для определенных веб-сайтов - PullRequest
0 голосов
/ 15 февраля 2012

Я не очень хорошо разбираюсь в регулярных выражениях, поэтому я надеюсь, что кто-то может помочь придумать что-то, что будет соответствовать тому, что я пытаюсь сделать, а именно:

Я хочу, чтобы он совпадал в следующих случаях (только для ссылок на YouTube):

http://www.youtube.com/watch?v=oHg5SJYRHA0
www.youtube.com/watch?v=oHg5SJYRHA0
youtube.com/watch?v=oHg5SJYRHA0
http://youtu.be/oHg5SJYRHA0
www.youtu.be/oHg5SJYRHA0
youtu.be/oHg5SJYRHA0

также в первых трех примерах он должен соответствовать любому концу домена, а не только .com

Пока я спрашиваю об этом, мне также нужно будет иметь возможность получить только удостоверение личности с видео.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Вы можете сделать следующее:

function getYoutubeId(str) {
    var check;
    check = /youtu.be\/(\w+)/.exec(str); 
    if(check) return check[1];
    check = /youtube\.com\/.*v=(\w+)/.exec(str); 
    if(check) return check[1];
    return null;
}

getYoutubeId("http://www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("http://youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("www.youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0

getYoutubeId(""); // null
getYoutubeId("google.com"); // null
getYoutubeId("youtu.be/"); // null
getYoutubeId("youtube.com/?other=something"); // null
1 голос
/ 15 февраля 2012

Это должно сработать:

(?:http://)?(?:www\.)?youtu(?:\.be|be.com)/(?:watch\?v=)?([\d\w]+)

Первая захваченная группа - это идентификатор видео. Вы можете проверить это здесь: http://www.regexr.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...