var rs = new RegExp("(^|)id=([^&]*)(&|$)", "gi").exec(String(window.document.location.href)), tmp;
| 部分 | 含義 |
|---|---|
new RegExp(...) | 創建正則對象,參數為模式字符串和標志 |
"(^|)id=([^&]*)(&|$)" | 模式:(^|) 匹配字符串開頭或任意位置(注意:此處第一個分組為空選項,寫法較奇特)id= 匹配字面量 "id="([^&]*) 捕獲組 2:匹配零個或多個非 & 字符(即參數值)(&|$) 匹配 & 或字符串結尾 |
"gi" | 標志:g 全局匹配,i 忽略大小寫 |
.exec(String(window.document.location.href)) | 在當前頁面完整 URL 上執行匹配,返回結果數組或 null |
, tmp | 聲明變量 tmp(未初始化),與 rs 同作用域 |
rs 為數組:
rs[0]:完整匹配字符串(如 "id=123&")rs[1]:第一個分組內容(此處為空或開頭)rs[2]:目標參數值(如 "123")rs[3]:第三個分組(& 或空)更清晰的寫法:
const urlParams = new URLSearchParams(window.location.search);
const idValue = urlParams.get('id'); // 直接獲取,無需正則
現代瀏覽器原生支持 URLSearchParams,代碼更簡潔、健壯。