要检查金额的ng-pattern应该是1到3位数,带有2个十进制值(999.99)?

时间:2017-09-06 13:32:33

标签: angularjs-ng-pattern

我正在处理交易表单。在表单中,有一个字段名称Amount。我正在使用这个ng-pattern,即ng-pattern="/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{1,2})?$/",它只允许带有2个十进制值的数字。此外,0也不符合此输入模式。

<input type="text" ng-model="copayAmount" ng-pattern="/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{1,2})?$/" maxlength="9" required> 

上面的表达式允许9位数值,2位十进制值。但我只想要3位数,带有2位小数值。

我想只有数字的ng-pattern应该只在3位数(不超过3位数)内有效,带有2位十进制值,即999.99(0应该无效)。

请帮忙。感谢。

2 个答案:

答案 0 :(得分:0)

您的模式有效,您可以从https://regex101.com/r/XaumOY/1

查看
$scope.numberPattern = (function() {
    var regexp = /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{1,2})?$/;
    return {
        test: function(value) {
            if( $scope.checkedumber=== false ) {
                return true;
            }
            return regexp.test(value);
        }
    };
})();

在HTML中,不需要进行任何更改:

<input type="text" ng-model="..." ng-required="checkedumber"
    ng-pattern="numberPattern" />

答案 1 :(得分:0)

伙计我已经为这种情况实施了模式:

ng-pattern="/^[1-9][0-9]{0,2}(\d{3}[-.]?:,?[0-9]{3}){0,3}(?:\.[0-9]{1,2})?$/"

此模式允许数字大于0,数字为1到3位&amp; 2十进制值。