无法理解如何添加将所有无效条目标记为无效的ng-pattern。
我试过使用这个"/^(0|\-?[1-9][0-9]*)$/
它可以很好地过滤掉0.1或甚至0123之类的数字,这些数字无效(并且不会被/^-?[0-9][^\.]*$/
过滤掉,在某些类似问题中被视为正确答案)。
但实际上并没有过滤掉“+3”和“1”之类的数字。 (正则表达式似乎是正确的,并且不允许这些值,我试图在regex101.com上检查它)如果您使用我在此处列出的ng-patterns之一,请尝试在输入字段中输入+ N.你会发现它是有效的。 (可能是那个模型将包含3& 1而不是+3& 1.但我会将输入标记为无效,直到用户输入实数整数)
希望有人遇到同样的问题。
顺便提一下,其中一个可能的解决方案是创建一个阻止输入“。”的指令。和“+”,但我想知道是否有可能用ng-pattern解决这个问题。
答案 0 :(得分:0)
试试这个ng-pattern="/^[1-9]\d*$/"
只允许整数:
angular
.module('App', [])
.controller('DefaultController', ['$scope', '$log', function ($scope, $log) {
$scope.logNumber = function() {
$log.log($scope.num);
};
}]);

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.10/angular.min.js"></script>
<div ng-app="App">
<div class="container" ng-controller="DefaultController">
<form name="form">
<input type="number" ng-pattern="/^[1-9]\d*$/" ng-change="logNumber()" ng-model="num" id="num" name="num">
<hr>
Input valid? = <code>{{ form.num.$valid }}</code>
</form>
</div>
</div>
&#13;