0

我们如何解释以下正则表达式?

/^\/products\/(?:([^\/]+?))(?:\/([^\/]+?))?\/?$/i,

我理解它可以评估类似的东西

/products/ (optional parameters)

注意:我正在用 Javascript 编程。准确地说是节点框架。

4

1 回答 1

1

/^\/products\/(?:([^\/]+?))(?:\/([^\/]+?))?\/?$/i,

第一个/是正则表达式分隔符。^指的是字符串的开头/products/

(?:不捕获组

([^\/]+?)捕获到 \1,除 . 之外的任何字符串\/。这个字符串是'最少选择的,因为?最后是尾随。')` 结束非捕获组。

(?:另一个不捕获组开始,它/由于转义字符而分组但不捕获\/

([^\/]+?)捕获到 \2,除 . 之外的任何字符串\/。这个字符串是'最少选择的,因为?最后是尾随。')` 结束非捕获组。

不确定?结尾有(?:([^\/]+?))(?:\/([^\/]+?))什么不同。

\/?寻找一个可选的/

$ 在可选的 \n 之前和字符串的结尾

/i使正则表达式忽略大小写,因此它会/products/在开头匹配 , `/PROducts' 等。

于 2013-08-11T07:39:05.797 回答