使用步驟
- 在兩個斜槓之間輸入表示式,或從常用正則中選一個作為起點。
- 切換 g、i、m、s、u、y 修飾符,改變匹配方式。
- 貼上測試文字,匹配結果會被標示,並列出位置和分組。
- 在「替換為」中輸入 $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 中執行,測試用的日誌和資料都留在你的裝置上。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。