(?:X)在正则中表示所匹配的子组X不作为结果输出
正常情况(X)中的X会被作为新增的一个组序号输出,比如(A)(B),A的序号1,B的序号2
正常情况(X)中的X会被作为新增的一个组序号输出,比如(A)(B),A的序号1,B的序号2
如果(?:A)(B),A将没有序号不输出,B的序号为1
/*规范化url,去掉后面的查询字符串,可选的反斜杠,并将它变为小写*/
var path = req.url.replace(/\/?(?:\?.*)?$/, '').toLowerCase();
\/ 一个 / 字符
\/? 有或没有 / 字符
(?:) 匹配组, ?:用於标记该匹配组不应被捕获
\? 一个 ? 字符
. 除了行分隔符以外的任意字符
* 重复0至任意次
.* 任意个除了行分隔符以外的字符
(?:\?.*)? 有或没有均可
$ 匹配字符串的终止位置
总结起来, 该正则用於匹配出URL尾部的蒐索部分
例如
..../?abc 匹配出 /?abc
...?abc 匹配出 ?abc
.../ 匹配出 /
.../efg 匹配出空字符串