Я внес несколько небольших изменений в регулярное выражение Мантиша , чтобы включить все тестовые случаи из J W's и matx's ответов; так как это не сработало на всех из них изначально. Могут потребоваться дальнейшие изменения, но, насколько я могу судить, это по крайней мере охватывает большинство ссылок:
/(?:[?&]vi?=|\/embed\/|\/\d\d?\/|\/vi?\/|https?:\/\/(?:www\.)?youtu\.be\/)([^&\n?#]+)/
var url = ''; // get it from somewhere
var youtubeRegExp = /(?:[?&]vi?=|\/embed\/|\/\d\d?\/|\/vi?\/|https?:\/\/(?:www\.)?youtu\.be\/)([^&\n?#]+)/;
var match = url.match( youtubeRegExp );
if( match && match[ 1 ].length == 11 ) {
url = match[ 1 ];
} else {
// error
}
Для дальнейшего тестирования:
http://regexr.com/3fp84