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