2016-01-07 771 views
0

任何人都可以告訴我的JavaScript regEx在小數點前接受12個數字,並且只允許小數點後兩位數。如果數字沒有任何小數點,文本框應該接受最多12個數字。值應該只有數字。 我已經有一個指令,我正在執行所有的JavaScript驗證。請讓我知道還有什麼應該添加。Javascript regExp接受小數點後12位數和小數點後兩位數

的directive-

.directive('allowOnlyDigits', function() { 
    return { 
     require: '?ngModel', 
     scope: { currencycode: '=' }, 
     link: function(scope, element, attrs, ngModelCtrl) { 
      if(!ngModelCtrl) { 
      return; 
      } 

      ngModelCtrl.$parsers.push(function(val) { 
      if (angular.isUndefined(val)) { 
       var val = ''; 
      } 


      var decimalCheck = clean.split('.'); 

      if(!angular.isUndefined(decimalCheck[1])) { 
       decimalCheck[1] = decimalCheck[1].slice(0,2); 
       clean = decimalCheck[0] + '.' + decimalCheck[1]; 
      } 

      if (val !== clean) { 
       ngModelCtrl.$setViewValue(clean); 
       ngModelCtrl.$render(); 
      } 
      return clean; 
      }); 

      element.bind('keypress', function(event) { 
      if(event.keyCode === 32) { 
       event.preventDefault(); 
      } 
      }); 
     } 
     }; 
    }) 
+1

使用['^ [0 -9] {12}(\。[0-9] {2})?$'](https://regex101.com/r/aO2kJ7/1) – Tushar

+0

@Tushar將強制兩位小數,你不能一個 – epascarello

+0

我已經在使用指令來接受數字,小數點後一位數字和兩位數字。我只是想限制最大長度。如果數字沒有任何十進制值,那麼最大長度應該限制爲12。 – user2138675

回答

3

這是正則表達式,你正在尋找:/^\d{1,12}(\.\d{1,2})?$/

演示(自己嘗試一下):

var input = document.getElementsByTagName("input")[0] 
 
input.oninput = function() { 
 
    document.getElementById("output").textContent = /^\d{1,12}(\.\d{1,2})?$/.test(input.value) 
 
}
<input type="text" /> 
 
<div id="output"></div>

相關問題