Javascript正则表达式可选字符

时间:2013-10-24 15:05:37

标签: javascript regex

我有一个正在使用的正则表达式模式(从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都失败了。

帮助一个兄弟。

3 个答案:

答案 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+)/;