2012-03-02 44 views
-3

我在尋找一個正則表達式,它只驗證正數數字。
例如
0無效。
0.123有效。
任何正整數都是有效的。
任何負數無效C中正數的正則表達式#

+4

谷歌說什麼? – Mithrandir 2012-03-02 10:11:06

+0

爲什麼0.123不是正數?聽起來就像你想找到1或更多的數字。 – SpaceBison 2012-03-02 10:11:30

+1

@SpaceBison - 你看過這個問題嗎? 0.123有效。 – Oded 2012-03-02 10:12:00

回答

-1

這可以幫助ü

正數--- ^\d*\.{0,1}\d+$

+0

這會給你.123作爲一個possitive(這是!),但它不像Klass Jan的例子(0。123) – dotoree 2012-03-02 10:18:38

2

我不相信,一個正則表達式是測試正數的最佳方式,但如果你必須使用正則表達式由於某種原因,那麼這應該符合你們所要求的:

^(?:[1-9]\d*(?:\.\d+)?|0\.0*[1-9]\d*)$ 
+0

+1爲參數,不應使用正則表達式來解析數字。這是一個文本匹配工具。 – Aphelion 2012-03-02 10:26:54

0

試試這個

^(?!-|0(?:\.0*)?$)\d+(?:\.\d+)?$ 

查看它here on Regexr

^字符串

(?!-|0(?:\.0*)?$)負前向斷言的開始,當字符串起始失敗「 - 」或一個0和0.0 *後跟字符串的結尾。

\d+比賽至少一位

(?:\.\d+)?匹配任意一個點,隨後在至少一個數字

$的字符串的結尾

+0

雖然這將允許「0.0000」,這可能是OP想要以與普通的「0」相同的方式拒絕。 – LukeH 2012-03-02 10:25:07

+0

@LukeH謝謝,修正。 – stema 2012-03-02 10:28:10

7

如果你只是想驗證輸入數字作爲有效正數,您不需要Regex - 只需使用DoubleDecimal上定義的ParseTryParse方法並檢查值是否爲正數。

decimal test; 

if(decimal.TryParse(myString, out test)) 
{ 
    // parsed OK, myString is a valid decimal 
    if(test > 0) 
    { 
    // yay, it is positive! 
    } 
} 
+0

是的,做@Oded說的。否則,你最終會遇到各種奇怪的東西,比如007不積極,或者00.12積極。 – zmbq 2012-03-02 10:24:32

+0

@zmbq:'00.12' *是*正面!如果你仔細地編寫和測試你的正則表達式,你將不會結束奇怪的邊緣情況。另一方面,我同意100%Oded的答案優於正則表達式(除非OP有真正的原因爲什麼他們必須使用正則表達式)。 – LukeH 2012-03-02 10:29:18

+0

好吧,這是積極的。無論如何,如果你只是使用Oded的代碼,我試圖說你不需要小心謹慎。 – zmbq 2012-03-02 10:34:27