【问题标题】:Javascript regExp to accept 12 digits before decimal and two digits after decimalJavascript regExp接受小数点前12位和小数点后两位
【发布时间】:2016-01-07 13:26:39
【问题描述】:

谁能告诉我 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();
            }
          });
        }
      };
    })

【问题讨论】:

  • @Tushar 会强制两位小数,你不能有一个
  • 我已经在使用指令只接受数字、一位小数和小数点后两位。我只想限制最大长度。如果数字没有任何十进制值,那么最大长度应限制为 12。

标签: javascript angularjs regex


【解决方案1】:

这是您要查找的正则表达式:/^\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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多