範例 |
正規表示式範例 |
數字範圍 |
浮點數 |
電子郵件地址 |
IP 位址 |
有效的日期 |
數字日期轉文字 |
信用卡號碼 |
比對完整行 |
刪除重複行 |
程式設計 |
兩個相近的字詞 |
陷阱 |
災難性回溯 |
過多重複 |
阻斷服務攻擊 |
讓所有內容都可選 |
重複擷取群組 |
混合 Unicode 和 8 位元 |
更多本網站資訊 |
簡介 |
正規表示式快速入門 |
正規表示式教學 |
替換字串教學 |
應用程式和語言 |
正規表示式範例 |
正規表示式參考 |
替換字串參考 |
書籍評論 |
可列印 PDF |
關於本網站 |
RSS Feed 和部落格 |
比對 IP 位址是正規表示式複雜度和精確度之間權衡取捨的另一個好範例。 \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b 會完美比對任何 IP 位址。但也會比對 999.999.999.999,好像它是一個有效的 IP 位址。如果你的正規表示式版本支援 Unicode,它甚至可能會比對 ١٢٣.१२३.೧೨೩.๑๒๓。這是否會造成問題,取決於你打算套用正規表示式的檔案或資料。
若要將 IP 位址中的所有 4 個數字限制在 0 到 255 之間,你可以使用下列正規表示式。它會將 IP 位址的 4 個數字儲存到 擷取群組 中。你可以使用這些群組進一步處理 IP 號碼。自由間距模式 允許它符合頁面寬度。
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
上述正規表示法允許數字 10 到 99 有 1 個前導零,數字 0 到 9 有 2 個前導零。嚴格來說,具有前導零的 IP 位址表示八進位表示法。因此,您可能想要禁止前導零。這需要一個稍長的正規表示法
\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b
如果您不需要存取個別數字,您可以使用 量詞 將上述 3 個正規表示法縮短為
\b(?:\d{1,3}\.){3}\d{1,3}\b
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}
(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b
上述 regex 使用 字詞邊界 來確保 IP 位址中的第一個和最後一個數字不是字母數字字元序列中的一部分。這些 regex 適用於在較長的字串中尋找 IP 位址。
如果您想要驗證使用者輸入,確保字串僅包含 IP 位址,則需要將字詞邊界替換為 字串開頭和字串結尾錨點。如果您的 regex 風格支援,可以使用專用的錨點 \A 和 \z
\A(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\z
如果不是,您必須使用 ^ 和 $,並確保它們在斷行處比對的選項已關閉
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
| 快速開始 | 教學 | 工具和語言 | 範例 | 參考 | 書籍評論 |
| 正規表示式範例 | 數字範圍 | 浮點數 | 電子郵件地址 | IP 位址 | 有效日期 | 數字日期轉換為文字 | 信用卡號 | 比對完整行 | 刪除重複行 | 程式設計 | 兩個相近的字 |
| 災難性回溯 | 重複次數過多 | 拒絕服務 | 讓所有內容為選用 | 重複擷取群組 | 混合 Unicode 和 8 位元 |
頁面網址:https://regular-expressions.dev.org.tw/ip.html
頁面最後更新時間:2021 年 9 月 2 日
網站最後更新時間:2024 年 3 月 15 日
版權所有 © 2003-2024 Jan Goyvaerts。保留所有權利。