如何使这个REGEX的最后一部分可选?

时间:2013-07-02 17:59:39

标签: javascript regex

我循环遍历页面上的所有链接,并将其href值与以下模式匹配:

([^/]+)/([0-9]+)/([^/]+)

问题是页面上有两种类型的链接格式:

1. /video/123/slug
2. /video/123

使用上述正则表达式捕获数字1但第二次失败。我想让正则表达式(slug)的第三部分是可选的,这样当正则表达式再次匹配时,两种链接格式都返回true。怎么做?

3 个答案:

答案 0 :(得分:3)

将最后一位放在非捕获组的括号中,然后添加?

([^/]+)/([0-9]+)(?:/([^/]+))?

答案 1 :(得分:2)

使用?量词,这使您的模式可选。它匹配模式的0或1次出现。

此外,您需要将最后一个斜杠与正则表达式的最后一部分组合在一个非捕获组中。

([^/]+)/([0-9]+)(?:/([^/]+))?

答案 2 :(得分:0)

如果添加?,则应使模式的最后一部分可选。