正規表達式測試器
在下方輸入正規表達式和測試字串。比對結果即時高亮顯示。支援JavaScript regex旗標。所有處理均在瀏覽器中本地完成。
/
/
g
已複製!
| # | 位置 | 匹配 | 分組 |
|---|
正規表示式旗標
| 旗標 | 說明 |
|---|---|
g | 全域 - 尋找所有比對,不只第一個 |
i | 不區分大小寫比對 |
m | 多行 - ^ 和 $ 比對行邊界 |
s | Dotall - . 比對換行字元 |
u | Unicode - 啟用完整 Unicode 比對 |
y | 只在上一次匹配結束的位置繼續匹配 |
每一處匹配都會列出它的起始位置和捕獲到的全部分組,具名分組也在內,而這通常正是你要核對的東西。替換模式把同一個模式送進標準的替換語法,所以 $1 和 $
常見問題
為什麼我的模式只找到第一處匹配?
因為 g 旗標沒開。不開的話,正規表示式按設計就在第一處匹配停下,這在做有效性檢查時正合適,在掃一整篇文件時就不合適了。打開它,所有匹配都會列出來。
支援具名分組嗎?
支援。編號分組和具名分組都會在每一處匹配的表格裡出現,所以用了 (?<year>\d{4}) 的模式會把 year 和分組 1 一起顯示出來。你要核對的通常正是這個,而不是模式究竟匹不匹配。
替換模式怎麼處理 $1?
和你自己的程式碼完全一樣,因為它把模式和替換字串交給語言自帶的替換函式。所以 $1 和 $<name> 指向分組,$& 是整個匹配,$$ 是一個真正的美元符號。
為什麼它不再往下列匹配了?
這裡設了上限,因為一個在每個位置都能匹配的模式,會給每個字元產生一行,表格在變得有用之前很久就已經沒法看了。撞到上限時,通常說明模式比你原本想的寬。
我的模式把頁面卡住了,為什麼?
有些模式會發生災難性回溯:像 (a+)+ 這樣的巢狀量詞,遇到一段差一點就能匹配的文字,可能耗費指數級時間。這是模式本身的性質,不是本頁面的問題,而且值得知道,因為同一個模式在你的伺服器上也會這樣。