我有这个正则表达式:
/.*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确实有效,但可能未达到预期目的。
?
,表示:“不匹配一次”。 .*
,这意味着:“尽可能匹配任何内容(换行符除外)。?
量词,因此在未对&autoplay=1
进行分组(将由.*
进行匹配)时,RegExp也有效。您可能正在寻找此RegExp。
.*?
的意思是:“匹配任何内容(换行符除外),并尽可能少地获取RegExp匹配。(&autoplay=1|$)
的意思是:“匹配&autoplay=1
或字符串的结尾($
)。如果省略了字符串标识符的结尾,则.*?
将匹配NOTHING,因为.*?
对空字符串也有效。关于javascript - Javascript正则表达式无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7804607/