2015-06-19 200 views
7

我需要一個正則表達式來檢查字符串的值是'0'還是長度等於1到10的正數(也是第一個數字不能爲零的地方)。0或正數的正則表達式

我被卡住了,我可以得到0,但我無法得到正數。

以下是我有:

(^([0])$)|(^([1-9][0-9]{0-9})$) 

這REG EXP看起來有點瘋狂,我已經嘗試了很多不同的東西,使更加瘋狂和瘋狂。

+2

會不會轉換成一整型更快和更容易? –

+1

爲什麼不試圖解析它並忽略正則表達式? – Jonesopolis

+0

你想驗證,還是提取文本? – willaien

回答

7

對於一系列可能性,您使用逗號而不是連字符。

(^([0])$)|(^([1-9][0-9]{0,9})$) 

但是,您正則表達式可以簡化爲:

^(0|[1-9][0-9]{0,9})$ 
2

提供更快,非正則表達式的方法:

static void Main(string[] args 
{ 
    string str = "12"; 

    long test; 
    if(str.Length <= 10 
     && long.TryParse(str, out test) 
     && test >= 0) 
    { 
     //valid 
    } 
} 
+0

這不接受0:P –

+0

好點,更新 – Jonesopolis