2012-07-31 331 views
1

我有一個文本框的請求有一個值範圍,我使用的模式^(\d{1,3})\-(\d{1,3})$似乎工作。正則表達式範圍的數字或只是一個數

此外現在他們想:從0 to 20 正2位數的範圍(01-20 or 1-3 or 1-03 or 01-4 and so on)

限制 正2位數我使用^\d{2}([\-]\d{2})?$,但我對如何施加限制不清楚0到20

使用C#ASP.Net RegularExpressionValidator。

在此先感謝

回答

2

模式1 ^(20|[10]?\d)$可以匹配0-20

PATTERN2 ^(20|[10]?\d)(?:-(20|[10]?\d))?$能匹配 「0-20」, 「1-20」, 「2-20」 ...... 「20-20」 或0〜20

但是壞消息是pattern2會匹配字符串like「5-1」,「20-3」

對於這個問題,銀色子彈不存在,你需要編寫一些代碼來檢查範圍(獲取字符串從組1和組2中將它們轉換爲整數以進行比較)。

+0

這個工作時,我把這個過程組合成兩個正則表達式。我使用了RegularExpressionValidator本身的第二個,它給出了期望的結果。 – jjhayter 2012-08-01 21:04:03

+0

如果我需要一個匹配從18歲到75歲的正則表達式? – 2015-10-23 14:47:55

0

爲20的極限,你必須單獨做數字。確保它是20或第一個數字是0-1,第二個數字是0-9。

20 | ([0-1]?[0-9])

編輯:那麼整個事情應該是^\d{2}([-](20 | ([0-1]?[0-9])))?$

+0

這接受'29' ...你可能想要類似'([01]?\ d | 2 \ d)''。 – Dougal 2012-07-31 18:11:41

+0

好的。我認爲我所做的應該解決它。 – 2012-07-31 18:13:11

+0

假設OP要確保第一個數字不高於第二個數字,您應該更改您的正則表達式的第一部分。 '\ d {2}'接受所有高達99的數字。可能是這樣的:'/ ^([01]?[0-9] | 20) - ([01]?[0-9] | 20)$ /' – Aust 2012-07-31 18:25:08

0

試試這個:([01]?\ d | 2 \ d)。

這可能會做你正在尋找。

相關問題