2013-01-25 82 views
-2

我想要一個只允許數字從1到9999的正則表達式。它應該限制所有其他字符符號和全部。 我試過^\d+$。但它不工作正則表達式限制零

+4

乞討是如此不相稱的我的朋友。 – ChaosPandion

+0

爲什麼Regex在這種情況下如此影響? –

回答

0

您可以使用

^0*(?!\d{5,}$)(?!0+$)\d+$ 

但更好解析字符串爲int,然後比較值..

遵循KISS原則

1

你真的不需要爲這個表達式,

所以非正則表達式的方式

 string myNum = "5000"; 

     int num; 

     if (Int32.TryParse(myNum, out num) && (num >= 1 && num <= 9999)) 
     { 
      //condition validated 
     } 

而且

正則表達式的方式

bool foundMatch = Regex.IsMatch(myNum, "^(?:[1-9][0-9]{0,3})$"); 
+0

eww,更好用Int32.TryParse –

+0

'09','0001' – Anirudha

+0

@ Some1.Kill..DJ怎麼樣 - 試試爲什麼我比較喜歡Int32.TryParse –

4

這是如果你堅持完全用正則表達式來完成,會有點難看。我能想到的唯一的事情就是:^[1-9][0-9]{0,3}$(1到9之間的數字,0到9之間的0到3數字)。

+0

'{0,3}',而不是'{0-3}',當然。 :) – DocMax

+0

@DocMax:糟糕 - 當然。謝謝。 –

+2

或{,3}也可以。 ;) –

1

你想使用一個字符類。

^[1-9][0-9]{,3}$ 
+0

數字10呢? – GrayB

+0

腦死亡。編輯將允許1-9爲第一個字符,並可選0-9爲多達3個字符。 –

+0

'09','0001' – Anirudha