猜猜这是一个非常简单的问题.我有一个正则表达式和PHP看起来像这样:
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $v, $matches);
Run Code Online (Sandbox Code Playgroud)
(它从他们不同类型的网址中删除了youtube代码).我必须将此移植到javascript,我想使用相同的正则字符串.
我尝试过以下方法:
yturl.match(/#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#/)
Run Code Online (Sandbox Code Playgroud)
但是这给了我Firebug中的这个错误: invalid quantifier
谁知道我做错了什么?
(我在Javascript中没有使用正则表达式的经验.所以请原谅我的愚蠢问题)
几个问题:
#)添加到JavaScript正则表达式中.youtu.be应该是youtu\.be.试试这个:
var myregexp = /\b(?:v\/|v=|youtu\.be\/)([^&\n]+)/;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1];
} else {
result = "";
}
Run Code Online (Sandbox Code Playgroud)
这将产生与PHP正则表达式完全相同的结果,但它更容易阅读.它是否会返回正确的结果是另一个问题 - PHP正则表达式的质量使我怀疑它可能有更多的问题,而不仅仅是明显的问题.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |