Javascript正则表达式不工作
我有一个正则表达式:Javascript正则表达式不工作,javascript,regex,Javascript,Regex,我有一个正则表达式: /.*v\=([\w-]+).*(&autoplay\=1)?/ 我正试图与之相匹配: http://www.youtube.com/watch?v=awmLS6GCJno&width=1000&height=300&autoplay=1 这是行不通的(它与v=…匹配,但与autoplay=1不匹配) 但是,如果我将正则表达式更改为: /.*v\=([\w-]+).*(&autoplay\=1)/ (否?自动播放后),则它
/.*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确实有效,但可能没有达到预期效果
1./*v\=([\w-]+).*(&autoplay\=1)?/
2./*v\=([\w-]+).*(&autoplay\=1)/
- 第一个RegExp有一个量词
,意思是“不匹配或一次匹配”?
- 该组的前缀为
,意思是:“尽可能匹配任何内容(新行除外)*
- 由于
量词,当?
未分组时,RegExp也有效(它将由&autoplay=1
匹配)*
/.*v=([\w-]+)*(&autoplay=1 |$)/
的意思是:“匹配任何东西(除了换行符),尽可能少地获得RegExp匹配*?
表示:“匹配(&autoplay=1 |$)
或字符串的结尾(&autoplay=1
)。如果省略字符串的结尾标识符,$
将不匹配任何内容,因为*?
对空字符串也有效*?
&autoplay=1
)它两次都匹配。使用expresso和gskinner.com\regexr进行了测试-因此我认为您的问题在别处!@Jamiec我也使用regexr进行了测试,如果您最后使用?进行测试,您会注意到,当您将鼠标悬停在匹配的URL上时,第二个子匹配不可用。(autoplay=1)如果*
是贪婪的,为什么正则表达式开头的*
不匹配任何表达式呢?如果&autoplay=1不是字符串的结尾怎么办?我是否要将它改为|.*)?不,如果没有匹配项,*
也将有效,导致正则表达式失败。您可以用字符分隔模式,但这些字符肯定不会出现:(&autoplay=1 |[^a-zA-Z0-9&=\u-]|$)
就可以了。