正則 (?:)

(?: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 匹配出空字符串

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章