範例 |
正規表示法範例 |
數字範圍 |
浮點數 |
電子郵件地址 |
IP 位址 |
有效日期 |
數字日期轉換為文字 |
信用卡號碼 |
比對完整行 |
刪除重複行 |
程式設計 |
兩個相近的字詞 |
陷阱 |
災難性回溯 |
重複次數過多 |
阻斷服務 |
將所有內容設為選用 |
重複擷取群組 |
混合 Unicode 和 8 位元 |
本網站的更多資訊 |
簡介 |
正規表示法快速入門 |
正規表示法教學 |
替換字串教學 |
應用程式和語言 |
正規表示法範例 |
正規表示法參考 |
替換字串參考 |
書籍評論 |
可列印 PDF |
關於本網站 |
RSS Feed 和部落格 |
由於 正規表示法 處理的是文字而非數字,因此要比對特定範圍內的數字需要特別小心。您無法只寫 [0-255] 來比對 0 到 255 之間的數字。雖然這是一個有效的正規表示法,但它比對的是完全不同的東西。[0-255] 是 字元類別,包含三個元素:字元範圍 0-2、字元 5 和字元 5(再次出現)。此字元類別比對單一數字 0、1、2 或 5,就像 [0125] 一樣。
由於正規表示法處理的是文字,因此正規表示法引擎會將 0 視為單一字元,而將 255 視為三個字元。若要比對 0 到 255 之間的所有字元,我們需要一個比對一個到三個字元的正規表示法。
正規表示式 [0-9] 符合 0 到 9 的單一數字。 [1-9][0-9] 符合 10 到 99 的雙位數字。這是簡單的部分。
符合三位數字稍微複雜一點,因為我們需要排除 256 到 999 的數字。 1[0-9][0-9] 符合 100 到 199。 2[0-4][0-9] 符合 200 到 249。最後,25[0-5] 加入 250 到 255。
如你所見,你需要將數字範圍分成具有相同位數的範圍,而這些範圍中的每個範圍都允許每個位數有相同的變化。在我們範例中的 3 位數字範圍中,以 1 開頭的數字允許後兩個數字有 10 個數字,而以 2 開頭的數字則限制後面的數字。
使用 交替 將所有這些組合在一起,我們得到:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]。這符合我們想要的數字,但有一個警告:正規表示式搜尋通常允許部分符合,因此我們的正規表示式會在 12345 中符合 123。這有兩個解決方案。
如果您在較大的文件或輸入字串中搜尋這些數字,請使用 字詞邊界,以要求非字詞字元(或完全沒有字元)出現在任何有效配對之前和之後。正規表示式就會變成 \b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b。由於交替運算子具有最低優先順序,因此需要 括號 將交替選項分組在一起。這樣,正規表示式引擎會嘗試配對第一個字詞邊界,然後嘗試所有交替選項,最後嘗試配對數字後面的第二個字詞邊界。正規表示式引擎會將所有字母數字字元以及底線視為字詞字元。
如果您使用正規表示式驗證輸入,您可能會想要檢查整個輸入是否包含有效的數字。為此,請將字詞邊界替換為 錨點,以配對字串的開頭和結尾:^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$。
以下是您可能想要配對的幾個更常見的範圍
| 快速入門 | 教學 | 工具與語言 | 範例 | 參考 | 書籍評論 |
| 正規表示式範例 | 數字範圍 | 浮點數 | 電子郵件地址 | IP 位址 | 有效日期 | 數字日期轉文字 | 信用卡號碼 | 比對完整行 | 刪除重複行 | 程式設計 | 兩個相近的字詞 |
| 災難性回溯 | 過多重複 | 阻斷服務 | 讓所有內容都為選用 | 重複擷取群組 | 混合 Unicode 與 8 位元 |
頁面網址:https://regular-expressions.dev.org.tw/numericranges.html
頁面最後更新:2021 年 9 月 2 日
網站最後更新:2024 年 3 月 15 日
版權所有 © 2003-2024 Jan Goyvaerts。保留所有權利。