← 返回 CaseShift
教學

線上測試 Regex 唔上傳:用私隱 Regex 測試器處理 log 同敏感資料

# 線上測試 Regex 唔上傳:用私隱 Regex 測試器處理 log 同敏感資料

**Slug:** `test-regex-online-private`
**Date:** 2026-10-29
**CTA:** https://toolbookly.com/zh/regexly

---

搜「regex tester online」、「regex101 替代」或者「regex 測試 log」會出一大堆貼上框。其實 pattern 本身好少係敏感嘢——**測試文字**先係。想知條 regex 係咪真係捉到你要嘅嘢,你會貼真實樣本:**production log、stack trace、客戶電郵、訂單匯出、你想遮蔽嘅身份證號碼或者電話**。呢篇講清楚 JavaScript regex 點運作、點解將樣本送去伺服器係錯預設,同埋點樣喺瀏覽器私隱咁測 pattern——**唔上傳、唔中轉**。

點解測試文字先係風險所在

好似 `\b\d{4}-\d{4}\b` 咁嘅 regex 乜都冇洩露。但你貼喺下面嗰 2,000 行 access log 可能有:

  • IP 地址、session ID、bearer token、API key

  • 電郵、電話、身份證號碼(個人資料)

  • 內部 hostname、檔案路徑、客戶編號
  • 如果測試器喺別人伺服器做配對——或者將「你條 regex」存做永久連結——呢啲文字可能落入 access log、analytics、儲存 snippet 嘅資料庫、甚至公開分享 URL。你核實唔到保留期或者邊個睇得到。處理 log 同個人資料時,樣本應該留喺**你部裝置**。

    一分鐘講 JavaScript regex 語法

    瀏覽器入面嘅測試器用 JavaScript 內置引擎(`RegExp`)。佢同 PCRE 好接近但唔完全一樣,所以要用你實際部署嗰種語法測:

  • **Flags**

  • `g` global——搵晒所有配對,唔止第一個

  • `i` 忽略大小寫

  • `m` multiline——`^` 同 `$` 喺每個換行位都配對,逐行睇 log 就要開

  • `s` dotAll——`.` 連換行都配對(多行 stack trace 好有用)

  • `u` unicode——正確處理 emoji 等字元,同埋支援 `\p{...}`,例如 `\p{Script=Han}` 配中文字

  • `y` sticky——只喺 `lastIndex` 位置配對,多數用嚟寫 tokenizer

  • **具名組** — `(?\d{3})` 會擷取到 `match.groups.status`;用 `\k` 反向引用,取代時用 `$`

  • **Lookaround** — 新式瀏覽器支援 lookahead `(?=...)`/`(?!...)` 同 lookbehind `(?<=...)`/`(?
  • **唔支援** — possessive quantifier(`a++`)、atomic group(`(?>...)`)、`(?i)` 呢類 inline modifier(大部分引擎)、遞迴。由 PCRE 或者 Python 答案抄過嚟嘅 pattern 可能要改。
  • 例子——用 `m` 同 `g` flag 喺常見 log 行抽 status code 同路徑:

    ```text
    ^(?\S+) \S+ \S+ \[[^\]]+\] "(?[A-Z]+) (?\S+)[^"]*" (?\d{3})
    ```

    Catastrophic backtracking:上線前一定要測

    有啲 pattern 遇到「差少少就配到」嘅輸入會用指數級時間。經典例子係巢狀量詞,例如 `(a+)+$`、`(\w+\s?)*$`,或者重疊嘅選擇 `(a|aa)*b`。一條好長、最尾先失敗嘅行,引擎會試晒所有拆法——網頁凍結,喺伺服器上就變成 ReDoS 停機。

    點樣避免:

  • 唔好喺一個量詞入面再包另一個量詞,而兩者可以配到同一啲字元

  • 令各個選項互相排斥,用 `[^"]*` 呢類具體字元類代替 `.*`

  • 加錨點(`^`、`$`、`\b`)等佢早啲失敗

  • 用一條好長、**配唔到**嘅行嚟測,唔好淨係測正常情況
  • 好嘅測試器會喺 **Web Worker 加時間限制** 入面做配對,失控嘅 pattern 會被停止,唔會凍結你個分頁。

    將 log 貼去任何 regex 測試器之前嘅清單

  • 優先標明 **client-side/瀏覽器內** 配對、斷網都用得嘅工具

  • 唔好將 production log、token、客戶資料貼去會將文字送上伺服器或者「儲存 regex」嘅網站

  • 睇清楚分享連結包含咩——如果有埋測試文字,只用已遮敏樣本分享

  • 優先將分享內容放喺 URL **fragment**(`#...`)嘅設計,瀏覽器唔會將 fragment 送去伺服器

  • 確認語法(JavaScript/PCRE/Python)同 regex 實際運行嘅地方一致
  • 私隱替代:用 Regexly 喺瀏覽器測

    Regexly 係 ToolBookly 嘅 regex 測試器。輸入 pattern、切換 `g i m s u y`、貼測試文字——每個配對即時標示,列出擷取組同具名組。仲有搜尋取代預覽(支援 `$1`、`$`、`$&`)、逐段淺白解釋、範本(電郵、網址、香港電話、香港身份證格式、中文字),同埋匯出 JavaScript 或 Python。**唔上傳、唔中轉**:pattern 同測試文字永遠唔會離開你嘅瀏覽器。配對喺有時間限制嘅 worker 入面跑,過慢嘅 pattern 會自動停止。分享連結只存喺 URL fragment,唔會儲存喺任何伺服器。

    **遮蔽 log 嘅典型流程:**

  • 打開 Regexly

  • 喺本地貼一段真實 log,揀 `g` + `m` flag

  • 改 pattern 直至捉晒你要嘅電郵/token/編號——又唔會誤中其他嘢

  • 預覽取代結果(例如 `[REDACTED]`),再匯出程式碼放入你個 script
  • 英文介面:Regexly

    邊種情況伺服器端測試器仍然 OK

    文件入面嘅公開樣本。用虛構資料嘅教學 demo。你願意連埋樣本貼上論壇嘅 pattern。

    production log、客服 ticket、帶個人資料嘅匯出、或者任何近住密碼嘅嘢——regex 應該喺**你部裝置**測。

    相關私隱優先流程

  • 喺 log 抽咗段 JSON 出嚟?用 JSONly 本地格式化/驗證。

  • 喺 log 見到 token?用 Jwtly 睇 claims,唔使送去任何地方。

  • 想比較修正前後嘅 log 輸出?用 Diffly——一樣喺瀏覽器跑。
  • 結語

    測 regex 嘅風險喺樣本文字,唔係 pattern。優先用瀏覽器端測試器:JavaScript 語法、六個 flag 齊、具名組、有時間限制防 catastrophic backtracking,而且唔上傳。

    用 Regexly 喺瀏覽器私隱咁測 regex(唔中轉)→