快速入門
教學
工具和語言
範例
參考
書籍評論
範例
正規表示法範例
數字範圍
浮點數
電子郵件地址
IP 位址
有效日期
數字日期轉換為文字
信用卡號碼
比對完整行
刪除重複行
程式設計
兩個相近的字詞
陷阱
災難性回溯
重複次數過多
阻斷服務
將所有內容設為選用
重複擷取群組
混合 Unicode 和 8 位元
本網站的更多資訊
簡介
正規表示法快速入門
正規表示法教學
替換字串教學
應用程式和語言
正規表示法範例
正規表示法參考
替換字串參考
書籍評論
可列印 PDF
關於本網站
RSS Feed 和部落格
RegexMagic—Generate regular expressions matching integer numbers and ranges

使用正規表示法比對數字範圍

由於 正規表示法 處理的是文字而非數字,因此要比對特定範圍內的數字需要特別小心。您無法只寫 [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])$

以下是您可能想要配對的幾個更常見的範圍