Regex Tester
Test regular expressions
Test regular expressions 在您的瀏覽器中本地執行
About the
正規表示式測試器針對您自己的範例文字執行 JavaScript 正規表示式,並在您鍵入時突出顯示每個符合項,因此您可以觀察模式成功或失敗,而不是猜測。除了突出顯示之外,它還列出了每個匹配項及其起始位置和捕獲組,這部分實際上告訴您組 2 是您想要的值還是空字串。三個錯誤導致大多數損壞的正規表示式,所有三個錯誤都在這裡可見:一個貪婪的量詞悄悄地吞下了比預期更多的文本,一個與任何內容匹配的未轉義點,以及一個在第一次命中後停止搜尋的丟失的全域性標誌。
Where people use the
- 針對少量真實日誌行除錯日誌解析模式。
- 在將其連線到表單之前製定電話或郵遞區號規則。
- 從貼上的文字區塊中提取訂單號碼或 ID。
- 透過更改一個字元並觀察突出顯示的移動來瞭解量詞的行為。
How to use the
- 1
貼上您要測試的文本
使用真實的樣本而不是發明的樣本。實際資料中的邊緣情況會破壞模式,因此也應包含一條不符合的行。
- 2
寫出模式
輸入不含斜線的表示式,例如 [a-z]+ 而不是 /[a-z]+/。標誌是單獨的切換。
- 3
開啟或關閉標誌
g 尋找每個匹配項而不是在第一個匹配項處停止,i 忽略大小寫,m 使錨點按行工作,s 讓點跨越換行符,u 啟用完整 Unicode 模式,y 錨點匹配到 lastIndex。
- 4
閱讀比賽表
每個結果都會顯示匹配的文字、其字元偏移量和每個捕獲組。意外的空組通常意味著可選量詞不符合任何內容。
- 5
複製完成的圖案
當突出顯示看起來正確時,複製表示式並將其貼上到程式碼中,同時記住也要攜帶標誌。
提示和最佳實踐
- 每個模式測試一條規則。執行三項工作的正規表示式不可讀且無法除錯。
- 包括不得匹配的行並確認它保持不突出顯示。
- 喜歡諸如年、月、日之類的命名組,而不是編號組,因此當您下個月返回時,該模式仍然有意義。
常見問題
這使用哪種正規表示式風格?
JavaScript,透過瀏覽器自己的 RegExp 引擎。語法接近 PCRE 和 Python 的 re 模組,但不完全相同。命名群組、lookahead、lookbehind 和 Unicode 屬性轉義了目前瀏覽器中的所有工作。
為什麼我的模式匹配的文本比我預期的要多得多?
因為量詞預設是貪婪的。像 .* 或 [0-9]+ 這樣的東西會盡可能多地消耗,同時仍然允許模式的其餘部分匹配。加問號讓它變得懶惰,所以.*?或[0-9]+?一有機會就停下來。
為什麼我只得到一個結果?
全域標誌已關閉。如果沒有 g,引擎將返回第一個匹配項並停止。切換 g 以收集輸入中的每個匹配項。
為什麼我的錨點在第二行不起作用?
預設情況下,插入符號和美元錨點指的是整個字串的開頭和結尾,而不是每一行。啟用 m 標誌以使它們具有線路感知能力。
我的測試資料傳送到任何地方了嗎?
不會。匹配發生在您的瀏覽器中,帶有內建的 RegExp 物件。沒有上傳任何內容,這就是為什麼您可以安全地貼上真實的日誌行或設定片段。
我可以用它來驗證表單上的輸入嗎?
您可以在此處開發模式,但始終在伺服器上再次驗證。客戶端正規表示式為使用者提供了便利,而不是安全控制,因為它可以完全跳過。