任何人都可以告诉我javascript regEx在十进制之前接受12个数字并且在十进制之后只允许2个数字。如果数字没有任何小数,则文本框应该接受最多12个数字。值应该只是数字。 我已经有一个指令,我正在执行所有的javascript验证。请告诉我还应该添加什么。
指令 -
.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();
}
});
}
};
})
答案 0 :(得分:3)
这是您正在寻找的RegEx:/^\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>