2017-01-10 33 views
2

我使用該正則表達式只接受0和1之間的正十進制值在文本框編寫C#web應用程序和驗證數據:Regex的十進制值高達4位小數

^(0(\.\d+)?|1(\.0+)?)$ 

我會適應像正則表達式一樣將條目限制在精度4個小數位。

允許

0 
0.1 
0.12 
0.123 
0.1234 
1 

不允許

-0.1 
-1 
1.1 
2 

我發現下面的正則表達式,只允許最多4位小數,但我對如何將二者結合起來不確定。

^(?!0\d|$)\d*(\.\d{1,4})?$ 

任何幫助,非常感謝,謝謝。

+1

也許['^(0(\。\ d {1,4})?| 1(\ .0 {1,4})?)$'](https://regex101.com/r/vFMCcI/2)? –

+0

這看起來像它做到了,謝謝。 –

+0

我添加了解釋的答案。 –

回答

2

您需要設置與限制{1,4}更換+量詞:

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

regex demo

詳細

  • ^ - 字符串的開始
  • ( - 外組啓動
    • 0 - 零
    • (\.[0-9]{1,4})? - 一個.的可選序列,隨後用1至4個數字
    • | - 或
    • 1 - 一個1
    • (\.0{1,4})?) - 一個可選的.後跟1到4個零的序列
  • $ - 字符串結尾。
+0

請注意,您也可以使用非捕獲組的版本:'^(?: 0(?:\。[0-9] {1,4})?| 1(?:\。 0 {1,4})?)$'(但是,在這種情況下,幾乎沒有什麼區別,請選擇吸引你的那個) –

相關問題