用短划线angularjs验证数字

Validating number with dashes angularjs

本文关键字:验证 数字 angularjs      更新时间:2023-09-26

嗨,我有一个输入字段,我想在其中进行验证,这样输入只有数字,但有破折号和最大11个数字的

  i.e  1233-224-1234

我已经应用了以下验证,只接受数字

  <input ng-pattern="customNum" ng-model=value.id />
   In my controller I have 
function myCtrl($scope) {
    $scope.customNum = /^'d+$/;
}

请让我知道如何更新,以便输入13位数字,其中11位是数字,2位是短划线。感谢

请参阅此处:http://jsbin.com/talaz/1/

<form name="form" class="css-form" novalidate>      
        <input type="text" ng-model="code" name="code" ng-pattern='/^'d{4}-'d{3}-'d{4}$/'    />Code :{{code}}<br />        
        <span ng-show="form.size.$error.pattern ">
          The code need to falow that 1234-123-1234 pattern</span>
 </form>

如果数字不固定,您可以尝试:

^'d+[-]'d+[-]'d+$

如果你的数字是固定的,那么:

^'d{4}-'d{3}-'d{4}$

如果你想要一个可重复使用的验证,可以在很多地方使用,也可以在一个地方更改,你可以使用自定义的验证器指令。我称之为信用卡验证器只是为了举例。

<form name="form">
   <input type="text" ng-model="user.creditcard" name="creditcardNumber" validate-creditcard>
   <span ng-show="form.creditcardNumber.$error.creditcard">
      This is not a valid credit card number.
   </span>
</form>

 app.directive('validateCreditcard', function() {
      var creditcardRegex = /^'d{4}-'d{3}-'d{4}$/;
      return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, el, attr, ngModelCtrl) {
          ngModelCtrl.$parsers.unshift(function(input) {
            var valid = creditcardRegex.test(input);
            ngModelCtrl.$setValidity('creditcard', valid);
            return valid;
          }); 
        }
      };
    });

plnkr 上的示例