測試工具

用於測試樣式與檢視差異的工具。所有處理都在您的瀏覽器中完成,資料不會上傳。

測試樣式或比對文字

需要檢查符合項目、擷取群組、取代結果或可能耗時的回溯時,請使用正規表示式測試器。比對會在設有時間限制的背景工作執行緒中進行,因此危險的表示式不會讓整個頁面停止回應。

若要找的是內容變更而非樣式,請使用文字差異工具。它提供並排與統一檢視,也可忽略大小寫、空白或行尾空格;兩份文件在整個過程中都保留於你的裝置。

詢問「哪裡改變了」的兩種方式

模式測試工具回答的是關於「形狀」的問題:這段文字符合我寫的規則嗎?又擷取到了哪些部分。差異比較工具回答的則是關於「內容」的問題:這兩份東西應該相同,請告訴我哪裡不同。多數除錯工作只需要其中之一,而選錯工具,就會讓二十分鐘的事情變成一個下午。

如果你在驗證欄位、從日誌行中擷取數值,或在整個程式碼庫中進行取代,那是模式問題。如果你在比較兩份匯出檔、兩個設定檔,或部署前後的回應,那就是差異問題。

模式會在你沒測到的地方出錯

大多數正規表示式的寫法,是不斷嘗試應該符合的輸入直到成功,而這幾乎一定會產生過於寬鬆的結果。最典型的例子,就是沒有錨點、因而接受任何「裡面藏著合法位址」字串的模式,而它會通過作者想得到的每一項測試。

所以請測試反例:格式錯誤的值、出現在欄位內部的分隔符號、幾乎但不完全符合預期格式的那一行。也請記得,這裡使用的是你瀏覽器的引擎,所以使用後顧斷言或具名群組的模式,在 Python、Go 或 PCRE 中的行為可能並不相同。

當兩行看起來一樣卻不一樣時

差異比較中最常見的意外,是你看不見的變更,而原因幾乎總是隱形的:行尾空格、Windows 與 Unix 不同的換行字元、一邊是 Tab 另一邊是空格、從文書軟體貼上的不換行空格,或是躲在第一行開頭的 BOM。

忽略大小寫、空白與行尾空格的選項,正是為了快速縮小範圍。找到真正的變更之後,請把這些選項關掉,因為在設定檔中,空白本身有時就是那個變更。