跳到正文
馬克工具箱

正規表示式測試

編寫正規表示式,輸入時即時標示每一處匹配,檢視捕獲分組並試驗替換結果。使用 JavaScript 正則引擎;執行時間過長的表示式會被自動中止,不會卡住頁面。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

//g
常用正則:
 
Contact: ada@example.com, grace.hopper@navy.mil
Servers: 10.0.0.1, 192.168.1.255
Date: 2026-09-26

使用步驟

  1. 在兩個斜槓之間輸入表示式,或從常用正則中選一個作為起點。
  2. 切換 g、i、m、s、u、y 修飾符,改變匹配方式。
  3. 貼上測試文字,匹配結果會被標示,並列出位置和分組。
  4. 在「替換為」中輸入 $1 或 $<name> 等,預覽查詢替換的結果。

引數說明

g(全域性)
查詢所有匹配而不是隻找第一個。下方列表始終顯示全部匹配;g 影響替換結果。
i(忽略大小寫)
字母匹配時不區分大小寫。
m(多行)
^ 和 $ 匹配每一行的開頭和結尾,而不是整段文字。
s(點匹配換行)
讓 . 也能匹配換行符。
u(Unicode)
按 Unicode 碼點處理,支援 \p{…} 屬性轉義,能正確處理 emoji 和生僻字。
y(粘連)
只在上一次匹配結束的位置繼續匹配。

常用語法速查

語法 匹配
\d \w \s 數字、單詞字元、空白
[abc] [^abc] [a-z] 其中之一、不在其中、範圍
* + ? {2,5} 0 次以上、1 次以上、0 或 1 次、2 到 5 次
*? +? 非貪婪,儘可能少地匹配
^ $ \b 開頭、結尾、單詞邊界
(…) (?:…) (?<name>…) 捕獲分組、非捕獲分組、命名分組
(?=…) (?!…) (?<=…) (?<!…) 先行斷言、否定先行、後行斷言、否定後行
[一-鿿] \p{Script=Han} 漢字(後者需 u 修飾符)

示例

表示式 (?<!\d)1[3-9]\d{9}(?!\d) 可以從文字中提取 11 位手機號碼,並且不會誤匹配更長數字串中的一段。

常見問題

這裡用的是哪種正則語法?

瀏覽器實現的 JavaScript(ECMAScript 2024)正則。大部分語法與 PCRE、Python、Java 相同,但後行斷言、命名分組、Unicode 轉義在各引擎之間略有差異,最終請在你實際使用的語言裡再驗證一次。

為什麼提示表示式被中止?

像 (a+)+$ 這樣的表示式在一長串 a 上會讓引擎嘗試指數級的組合,這叫災難性回溯。本工具在後臺執行緒執行正則,超過 1.5 秒就會中止。請改寫巢狀量詞,或使用更精確的字元類。

替換時怎麼引用分組?

$1、$2… 引用編號分組,$<name> 引用命名分組,$& 表示整個匹配,$$ 表示美元符號本身。

測試的文字會被上傳嗎?

不會。正則在瀏覽器的 Web Worker 中執行,測試用的日誌和資料都留在你的裝置上。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具