Преобразование PHP RegEx в JavaScript RegEx

У меня есть регулярное выражение PHP, которое я использую, чтобы получить видеокодек YouTube из URL-адреса.

Я хотел бы сопоставить это с регулярным выражением на клиентской стороне в JavaScript. Может ли кто-нибудь сказать мне, как преобразовать следующее PHP-выражение в JavaScript?

preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=embed/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\‌​n]+#", $url, $matches); 

Большое спасибо, спасибо!

Я думаю, единственная проблема – избавиться от утверждений lookbehind (?<=...) , они не поддерживаются в Javascript.

Их преимущество заключается в том, что вы можете использовать их, чтобы убедиться, что шаблон перед чем-то, но они НЕ включены в совпадение.

Таким образом, вам нужно удалить их, означает изменение (?<=v=)[a-zA-Z0-9-]+(?=&) v=[a-zA-Z0-9-]+(?=&) , но теперь ваш матч начинается с «v =».

Если вам просто нужно проверить и не нуждаться в согласованной части, тогда все будет хорошо.

Но если вам нужна часть после v= тогда вместо этого нужно добавить шаблон в группу захвата и продолжить работу с этими захваченными значениями.

 v=([a-zA-Z0-9-]+)(?=&) 

Затем вы найдете совпадающую подстроку в $ 1 для первой группы, $ 2 для второй, $ 3 …

вы можете заменить свой взгляд на утверждение, используя этот пост

Javascript: отрицательный эквивалент lookbehind?