Конвертировать PHP RegEx в JavaScript RegEx - PullRequest
1 голос
/ 16 февраля 2012

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

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

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

Очень признателен, спасибо!

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

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

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

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

Если вам просто нужно проверить и вам не нужна соответствующая часть, тогда все в порядке, все готово.

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

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

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

0 голосов
/ 16 февраля 2012

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

Javascript: отрицательный взгляд за эквивалентом?

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