我有这个正则表达式:

 /.*v\=([\w-]+).*(&autoplay\=1)?/

我要与之匹配的:
 http://www.youtube.com/watch?v=awmLS6GCJno&width=1000&height=300&autoplay=1

这是行不通的。 (与v = ..匹配,但与autoplay = 1不匹配)

但是,如果我将正则表达式更改为:
 /.*v\=([\w-]+).*(&autoplay\=1)/

(自动播放后没有?),那么它确实匹配了两者。(但是现在没有&autoplay的URL将不再匹配)。这就是为什么我添加了?在那组之后..那是错的吗?还有另一种方法吗?

糟糕,该自动填充标题显然不是问题。

最佳答案

您的RegExp确实有效,但可能未达到预期目的。


  • 第一个RegExp有一个量词?,表示:“不匹配一次”。
  • 该组的前缀是.*,这意味着:“尽可能匹配任何内容(换行符除外)。
  • 由于使用了?量词,因此在未对&autoplay=1进行分组(将由.*进行匹配)时,RegExp也有效。

    您可能正在寻找此RegExp。


  • .*?的意思是:“匹配任何内容(换行符除外),并尽可能少地获取RegExp匹配。
  • (&autoplay=1|$)的意思是:“匹配&autoplay=1或字符串的结尾($)。如果省略了字符串标识符的结尾,则.*?将匹配NOTHING,因为.*?对空字符串也有效。
  • 关于javascript - Javascript正则表达式无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7804607/

    10-10 23:17