2014-05-05 24 views

回答

-1

^\ S *(([0-9] {1,3}。([0 -9] {3})[0-9] {3})|?([0-9] +))([0-9] {1,2})\ S $應該驗證您的需求
EDIT 1:這將驗證:
100000,33
1.000,13

還有一件事,你可以編輯它以適應你的需求。 希望這有助於!

8

簡單的方法:

^\d{1,5}$|^(?=\d+[.,]\d+$).{3,6}$ 

Regular expression visualization

Debuggex Demo

+0

It't不接受自然數。例如131 –

+0

@ArmenMkrtchyan修復它 –

+0

@Robin是的,謝謝,第一次閱讀不正確。 –

0

爲什麼不使用C#的條件?是這樣的:

var x = 12345; 
if (x.ToString().Length == 5 && x.ToString().Contains(".")) 
{ 
    //do something 
} 

更新: 我創建了像你上面給出什麼,讓它的雙榜,因爲INT犯規接受十進制的樣本名單。

List<double> doubleList = new List<double>(new double[] 
    { 
     12345, 
     1234.5, 
     123.45, 
     12.345, 
     1.2345, 
     1.2, 
     1.23, 
     1.234, 
     1.2345, 
     12.3, 
     123.4, 
    }); 

private void button1_Click(object sender, EventArgs e) 
{ 
    foreach (var x in doubleList) 
    { 
     bool isNum = Regex.IsMatch(x.ToString(), @"^\-{0,1}\d+(.\d+){0,1}$"); 
     int countOfDot = Regex.Matches(x.ToString(), @"\.").Count; 

     if (countOfDot == 1 && isNum) //number w/ decimal place 
     { 
      string[] spLitX = x.ToString().Split('.'); 

      if (spLitX[1].Count() <= 5) //float max of 5digits 
      { 
       Console.WriteLine(x); 
      } 
     } 
     else if (countOfDot == 0 && isNum) //number w/o decimal place 
     { 
      Console.WriteLine(x); 
     } 
     else 
     { 
      //do nothing . . . 
     } 
    } 
} 

輸出:

12345 
1234.5 
123.45 
12.345 
1.2345 
1.2 
1.23 
1.234 
1.2345 
12.3 
123.4 
+0

例如,不驗證'1.2'。 – Toto

+0

@ M42,只需添加更多驗證即可。 。 。回答更新 – Elegiac

+0

答覆尚未生效。你必須接受像'1.2'這樣的數字。 – Toto

相關問題