正規表達式測試器

在下方輸入正規表達式和測試字串。比對結果即時高亮顯示。支援JavaScript regex旗標。所有處理均在瀏覽器中本地完成。

/ / g
已複製!
#位置匹配分組

正規表示式旗標

旗標說明
g全域 - 尋找所有比對,不只第一個
i不區分大小寫比對
m多行 - ^$ 比對行邊界
sDotall - . 比對換行字元
uUnicode - 啟用完整 Unicode 比對
y只在上一次匹配結束的位置繼續匹配

每一處匹配都會列出它的起始位置和捕獲到的全部分組,具名分組也在內,而這通常正是你要核對的東西。替換模式把同一個模式送進標準的替換語法,所以 $1 和 $ 的行為與你自己程式碼裡完全一致。匹配數量設了上限,否則一個在每個位置都能匹配的模式會造出比頁面畫得動還多的表格行。

又在手工整理資料?

每次都要在瀏覽器分頁裡修一遍的資料,本該交給程式碼。我們建構在系統之間搬運資料的整合、解析器和服務,也修好那些在半路上悄悄把資料弄壞的東西。

告訴我們你在搬什麼

常見問題

為什麼我的模式只找到第一處匹配?
因為 g 旗標沒開。不開的話,正規表示式按設計就在第一處匹配停下,這在做有效性檢查時正合適,在掃一整篇文件時就不合適了。打開它,所有匹配都會列出來。
支援具名分組嗎?
支援。編號分組和具名分組都會在每一處匹配的表格裡出現,所以用了 (?<year>\d{4}) 的模式會把 year 和分組 1 一起顯示出來。你要核對的通常正是這個,而不是模式究竟匹不匹配。
替換模式怎麼處理 $1?
和你自己的程式碼完全一樣,因為它把模式和替換字串交給語言自帶的替換函式。所以 $1 和 $<name> 指向分組,$& 是整個匹配,$$ 是一個真正的美元符號。
為什麼它不再往下列匹配了?
這裡設了上限,因為一個在每個位置都能匹配的模式,會給每個字元產生一行,表格在變得有用之前很久就已經沒法看了。撞到上限時,通常說明模式比你原本想的寬。
我的模式把頁面卡住了,為什麼?
有些模式會發生災難性回溯:像 (a+)+ 這樣的巢狀量詞,遇到一段差一點就能匹配的文字,可能耗費指數級時間。這是模式本身的性質,不是本頁面的問題,而且值得知道,因為同一個模式在你的伺服器上也會這樣。