我们如何解释以下正则表达式?
/^\/products\/(?:([^\/]+?))(?:\/([^\/]+?))?\/?$/i,
我理解它可以评估像
这样的东西 /products/ (optional parameters)
注意:我正在用Javascript编程。节点框架要准确。
答案 0 :(得分:1)
在/^\/products\/(?:([^\/]+?))(?:\/([^\/]+?))?\/?$/i,
第一个/
是正则表达式分隔符。 ^
指的是字符串/products/
(?:
不要捕获群组
([^\/]+?)
捕获到\ 1,除\/
之外的任何字符串。由于最后尾随?
,因此最少选择此字符串。 ')`结束非捕获组。
(?:
另一个不捕获组开始,它组但由于转义字符/
而未捕获\/
。
([^\/]+?)
捕获到\ 2,除\/
之外的任何字符串。由于最后尾随?
,因此最少选择此字符串。 ')`结束非捕获组。
不确定?
末尾的(?:([^\/]+?))(?:\/([^\/]+?))
是否有任何区别。
\/?
寻找optinal /
$
在可选的\ n之前,以及字符串的结尾
/i
使regexp忽略大小写,因此它会在开头匹配/products/
,`/ PROducts'等。