-1

我正在遍历页面上的所有链接,并将它们的 href 值与以下模式匹配:

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

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

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

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

4

3 回答 3

3

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

([^/]+)/([0-9]+)(?:/([^/]+))?
于 2013-07-02T18:00:48.323 回答
2

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

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

([^/]+)/([0-9]+)(?:/([^/]+))?
于 2013-07-02T18:00:29.187 回答
0

如果您添加一个?应该使模式的最后一部分成为可选的。

于 2013-07-02T18:00:45.737 回答