使用ngpattern验证自然输入数字

use*_*686 54 regex angularjs angularjs-validation

ng-pattern="/0-9/"用来设置price_field不接受decimal number.但是当我输入自然数(从0到9999999)时,ng-show会被激活Not valid number!.

我哪里做错了?.请帮忙.

<form name="myform" data-ng-submit="create()">
        <input type="number"
               name="price_field"
               data-ng-model="price"
               require
               ng-pattern="/0-9/"
        <span  ng-show="myform.price_field.$error.pattern">Not valid number!</span>
        <input type="submit" class="btn">
</form>
Run Code Online (Sandbox Code Playgroud)

Chi*_*ice 123

问题是您的REGX模式只匹配输入"0-9".

为了满足您的要求(0-9999999),您应该重写您的regx模式:

ng-pattern="/^[0-9]{1,7}$/"
Run Code Online (Sandbox Code Playgroud)

我的例子:

HTML:

<div ng-app ng-controller="formCtrl">
  <form name="myForm" ng-submit="onSubmit()">
    <input type="number" ng-model="price" name="price_field" 
           ng-pattern="/^[0-9]{1,7}$/" required>
    <span ng-show="myForm.price_field.$error.pattern">Not a valid number!</span>
    <span ng-show="myForm.price_field.$error.required">This field is required!</span>
    <input type="submit" value="submit"/>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

function formCtrl($scope){
  $scope.onSubmit = function(){
    alert("form submitted");
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle演示.


Nis*_*ani 11

这很有效

<form name="myform" ng-submit="create()">
    <input type="number"
           name="price_field"
           ng-model="price"
           require
           ng-pattern="/^\d{0,9}(\.\d{1,9})?$/">
    <span  ng-show="myform.price_field.$error.pattern">Not valid number!</span>
    <input type="submit" class="btn">
 </form>
Run Code Online (Sandbox Code Playgroud)