(?:X)
在正則中表示所匹配的子組X
不作爲結果輸出
正常情況(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
匹配出空字符串