我有一个正在使用的正则表达式模式(从Stack Overflow中获取)从vimeo URL中提取视频ID:
var regExp = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
var match = url.match(regExp);
无论是否指定了http或https,我都需要它。我试过了
var regExp = /http(s)?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
但是http和https都失败了。
帮助一个兄弟。
答案 0 :(得分:48)
它失败是因为您正在创建一个额外的捕获组,这意味着捕获组索引将与以前不同。
要创建s
选项而不创建捕获组,只需添加?
,就不需要括号。
/https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/
要创建非捕获组,您可以使用(?:)
,但这里没有必要,只显示示例:
/http(?:s)?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/
答案 1 :(得分:12)
如果您想选择“s”,请仅使用
s?
即,https?
将匹配http和https
答案 2 :(得分:2)
这个正则表达式应该有效:
var regExp = /https?:\/\/(www\.)?vimeo\.com\/(\d+)/;