我有一个PHP正则表达式,我正在用它从一个网址中获取YouTube视频代码。
我希望将其与JavaScript中的客户端正则表达式相匹配。谁能告诉我如何将下面的PHP转换成JavaScript?
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=embed/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $url, $matches);非常感谢,谢谢!
发布于 2012-02-16 18:19:09
我认为唯一的问题是去掉后视断言(?<=...),它们在Javascript中是不受支持的。
它们的优点是,您可以使用它们来确保模式在某些东西之前,但它们不包括在匹配中。
因此,您需要删除它们,这意味着将(?<=v=)[a-zA-Z0-9-]+(?=&)更改为v=[a-zA-Z0-9-]+(?=&),但现在您的匹配以"v=“开头。
如果你只需要验证,而不需要匹配的部分,那么它很好,你就完成了。
但是,如果您需要v=之后的部分,则将所需的模式放入捕获组中,并继续使用这些捕获的值。
v=([a-zA-Z0-9-]+)(?=&)然后,您将在第一组的$1、第二组的$2、$3中找到匹配的子字符串。
发布于 2012-02-16 18:16:02
你可以用这篇文章来替换你的后视断言。
https://stackoverflow.com/questions/9309349
复制相似问题