Javascript 仅用于输入数字的角度指令

Javascript 仅用于输入数字的角度指令,javascript,jquery,html,angularjs,regex,Javascript,Jquery,Html,Angularjs,Regex,我正在创建一个指令,以限制输入框仅接受数字。它应该接受1-9999999,但不接受前导0。它正在工作,但在输入第一个数字后,它接受所有数字和字符。请帮我解决这个问题。它应该接受10,而不是01。对于这一点,我的代码是 HTML: 小提琴手:我发现它可以工作(不是我创建的)。希望这有帮助 指令: fessmodule.directive('format', ['$filter', function ($filter) { return { require: '?ngModel',

我正在创建一个
指令
,以限制输入框仅接受数字。它应该接受1-9999999,但不接受前导0。它正在工作,但在输入第一个数字后,它接受所有数字和字符。请帮我解决这个问题。它应该接受10,而不是01。对于这一点,我的代码是

HTML:

小提琴手:

我发现它可以工作(不是我创建的)。希望这有帮助

指令:

fessmodule.directive('format', ['$filter', function ($filter) {
return {
    require: '?ngModel',
    link: function (scope, elem, attrs, ctrl) {
        if (!ctrl) return;


        ctrl.$formatters.unshift(function (a) {
            return $filter(attrs.format)(ctrl.$modelValue)
        });


        ctrl.$parsers.unshift(function (viewValue) {
            var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
            elem.val($filter(attrs.format)(plainNumber));
            return plainNumber;
        });
    }
};
}]);

另外,我还没有测试。

您只需要从模式中删除第一个
^
。这是

使用此项—

replace(/[^1-9]*/g, '');
您可以使用下面的选项在开始时限制0-


只需将另一个
^0+
添加到
/[^0-9]+/g
,即可删除前导零:

var transformedInput = inputValue.replace(/^0+|[^0-9]+/g, ''); 
//                                         ^^^              


^0+
匹配字符串开头(
^
)的一个或多个(
+
)零。

否它根本不接受0。。我猜这就是你想要的??不,我只是不想要0。它应该接受10,而不是01。
replace(/[^1-9]*/g, '');
replace(/^0|[^0-9]/, '');
var transformedInput = inputValue.replace(/^0+|[^0-9]+/g, ''); 
//                                         ^^^