Toolbox Hub
所有工具

Regex Tester

Test regular expressions

Test regular expressions 在您的瀏覽器中本地執行

About the

正規表示式測試器針對您自己的範例文字執行 JavaScript 正規表示式,並在您鍵入時突出顯示每個符合項,因此您可以觀察模式成功或失敗,而不是猜測。除了突出顯示之外,它還列出了每個匹配項及其起始位置和捕獲組,這部分實際上告訴您組 2 是您想要的值還是空字串。三個錯誤導致大多數損壞的正規表示式,所有三個錯誤都在這裡可見:一個貪婪的量詞悄悄地吞下了比預期更多的文本,一個與任何內容匹配的未轉義點,以及一個在第一次命中後停止搜尋的丟失的全域性標誌。

Where people use the

  • 針對少量真實日誌行除錯日誌解析模式。
  • 在將其連線到表單之前製定電話或郵遞區號規則。
  • 從貼上的文字區塊中提取訂單號碼或 ID。
  • 透過更改一個字元並觀察突出顯示的移動來瞭解量詞的行為。

How to use the

  1. 1

    貼上您要測試的文本

    使用真實的樣本而不是發明的樣本。實際資料中的邊緣情況會破壞模式,因此也應包含一條不符合的行。

  2. 2

    寫出模式

    輸入不含斜線的表示式,例如 [a-z]+ 而不是 /[a-z]+/。標誌是單獨的切換。

  3. 3

    開啟或關閉標誌

    g 尋找每個匹配項而不是在第一個匹配項處停止,i 忽略大小寫,m 使錨點按行工作,s 讓點跨越換行符,u 啟用完整 Unicode 模式,y 錨點匹配到 lastIndex。

  4. 4

    閱讀比賽表

    每個結果都會顯示匹配的文字、其字元偏移量和每個捕獲組。意外的空組通常意味著可選量詞不符合任何內容。

  5. 5

    複製完成的圖案

    當突出顯示看起來正確時,複製表示式並將其貼上到程式碼中,同時記住也要攜帶標誌。

提示和最佳實踐

  • 每個模式測試一條規則。執行三項工作的正規表示式不可讀且無法除錯。
  • 包括不得匹配的行並確認它保持不突出顯示。
  • 喜歡諸如年、月、日之類的命名組,而不是編號組,因此當您下個月返回時,該模式仍然有意義。

常見問題

這使用哪種正規表示式風格?

JavaScript,透過瀏覽器自己的 RegExp 引擎。語法接近 PCRE 和 Python 的 re 模組,但不完全相同。命名群組、lookahead、lookbehind 和 Unicode 屬性轉義了目前瀏覽器中的所有工作。

為什麼我的模式匹配的文本比我預期的要多得多?

因為量詞預設是貪婪的。像 .* 或 [0-9]+ 這樣的東西會盡可能多地消耗,同時仍然允許模式的其餘部分匹配。加問號讓它變得懶惰,所以.*?或[0-9]+?一有機會就停下來。

為什麼我只得到一個結果?

全域標誌已關閉。如果沒有 g,引擎將返回第一個匹配項並停止。切換 g 以收集輸入中的每個匹配項。

為什麼我的錨點在第二行不起作用?

預設情況下,插入符號和美元錨點指的是整個字串的開頭和結尾,而不是每一行。啟用 m 標誌以使它們具有線路感知能力。

我的測試資料傳送到任何地方了嗎?

不會。匹配發生在您的瀏覽器中,帶有內建的 RegExp 物件。沒有上傳任何內容,這就是為什麼您可以安全地貼上真實的日誌行或設定片段。

我可以用它來驗證表單上的輸入嗎?

您可以在此處開發模式,但始終在伺服器上再次驗證。客戶端正規表示式為使用者提供了便利,而不是安全控制,因為它可以完全跳過。

相關工具