2013-04-22 58 views
0

要求:正則表達式來限制輸入字段atmost兩位小數

我試圖限制輸入字段只有數字或數字鍵入高達只有兩個小數。如果用戶輸入兩個以上的小數位,則輸入字段必須僅顯示最多兩位小數的數字,並刪除所有其他數字。我正在使用正則表達式。

問題:

當多於兩位小數在輸入字段中輸入的,所有的小數位被刪除,顯示。問題在於正則表達式。

請幫助我形成一個正確的正則表達式。

代碼:

http://jsfiddle.net/h6kYh/

$(document).ready(function() { 

    $("#AmountField").bind("keyup change", function() { 

    var value = $(this).val(); 

     var numericReg = /^d+(?:\.\d{0,2})?$/ ; 
     if(!numericReg.test(value)) 
     { 
      value = value.replace(/(?=\d*\.?)(\d{3})/g,""); 
      $(this).val(value); 
     } 
    }); 
}); 

回答

0

應該

var invalidNumericReg = /^\d+(\.\d{3,})$/; 
    var validNumericReg = /^d+\(.\d{1,2})?$/; 

    if(invalidNumericReg.test(value))//has more than 3 decimal numbers! 
    { 
     value = value.replace(/^(\d+\.\d{2})\d+$/g,"$1"); 
     $(this).val(value); 
    } 
    else if(! validNumericReg.test(value)) 
    { 
     //invalid input 
    } 
+0

替換字符串應該是'$ 1'不是'\ 1'。 – MikeM 2013-04-22 17:57:27

+0

非常感謝Anirudh。但我想保留並顯示數字最多兩位十進制數字,以防止輸入並從第三位移除小數。你可以爲它建議正則表達式嗎? – user2229399 2013-04-22 17:57:56

+0

感謝MikeM,那有效。 :)謝謝Anirudh :) – user2229399 2013-04-22 18:00:12

0

嘗試

var numericReg = /^\d+\.?\d?\d?$/ ; 
if(!numericReg.test(value)) { 
    value = value.replace(/^(\d+\.?\d?\d?)?.*/,'$1'); 
    $(this).val(value); 
} 
+0

不,似乎不接受任何輸入本身! – user2229399 2013-04-22 18:22:05

+0

@ user2229399。固定。我沒有意識到你正在測試每個鍵盤。 – MikeM 2013-04-22 18:34:08

+0

'11.aa'會變成'11.' – Anirudha 2013-04-22 18:37:20