2012-07-11 129 views
1

我想要一個十進制輸入的正則表達式,它可以在十進制或逗號之前佔用四位數,在十進制/逗號之後可以佔用兩位數。沒有小數的5位數字無效。也可以接受null。十進制值的正則表達式

正確價值觀可以是:

1,1111,2222.56,0.99,9999.5間

無效

88888,8.888,

驗證表明還包括逗號和小數點。

如果可能,那麼也解釋表達式。

+0

已經回答:http://stackoverflow.com/questions/968825/regular-expression-for-decimal-number – 2012-07-11 11:47:49

回答

10
Regex.IsMatch(strInput, @"[\d]{1,4}([.,][\d]{1,2})?"); 

,並解釋:

[\d]{1,4} any character of: digits (0-9) between 1 and 4 times 

[.,]   any character of: '.', ',' 

[\d]{1,2} any character of: digits (0-9) between 1 and 2 times 

(...)?  match the expression or not (zero or one) 
+0

你匹配2222y56 – 2012-07-11 11:59:18

+0

謝謝,它的工作。是否有可能爲你解釋正則表達式。我想知道關於每一個描述。 – Maverick 2012-07-11 12:06:30

1
[0-9]{1,4}(\.[0-9]{1,2})? 

這意味着,1到4位數字,然後可以選擇小數點和1到2位數字。

+0

我想逗號也有小數 – Maverick 2012-07-11 11:54:14

0

使用這個表達式\d{4}[,\.]\d{2}\d+([,\.]\d+)?任何小數

+0

逗號也應該逃脫。 [,\。] - > [\,\。] .Hmm,其實不確定... – jon 2012-07-11 11:55:43

+0

@Jon,你錯了,不需要shild逗號 – 2012-07-11 11:57:33

+0

這個「\ d {4} [,\。] \ d {2}「僅在精確9999.55匹配時才返回true,在所有其他情況下返回false。理想情況下,1,12,137,6544,7.23都應該有效,但99999,9.369不應該是 – Maverick 2012-07-11 12:02:06

0

我們可以檢查Stirng值做代碼通過下面的代碼

Dim Success As Boolean 
    If text.Contains(".") Then 
     Dim result As Integer = Split(text, ".")(1) 
     If result > 0 Then 
      Success = True  'Containing Decimal Points greater than 
     Else 
      Success = False  'Containing "0" as Decimal Points 
     End If 
    End If 
    Return Success 
含有小數點
+0

這個問題被標記爲'C#'。這是基本? – mhlester 2014-01-18 07:17:56

1
^-?(0|[1-9]\d{0,3})([,\.]\d{1,2})?$ 

BEFORE逗號:

^- - 字符串

的開始? - 有可能是零或一個負號

0 - 十進制可能開始與一開始只有一個零...

| - 或...

[1-9] - 具有1任何數字至9

\ d {0,3} - 後跟任何3位數字

AFTER COMMA:

[,。] - 可能有「,」或「。」

\ d {1,2} - 隨後用1個或2位數字

(...)? - 零個或一次

$ - 字符串的結束