当正则表达式限制为数字时,ng-pattern允许使用“+”字符

时间:2016-07-28 10:53:52

标签: javascript angularjs regex ng-pattern angularjs-ng-pattern

使用正则表达式/ ^ [0-9] + $ /来限制文本框的输入只接受数字。它工作正常但是当类型类似于+124时,它也没有将文本框设置为无效。

<form name="myForm" novalidate>
  <input type="number" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" />
  <h3>Valid Status : {{myForm.age.$valid}}</h3>
</form>

输入:123输出:myForm.age。$ valid - true

输入:-123输出:myForm.age。$ valid - false

输入:+123输出:myForm.age。$ valid - true(不应该为真)

https://plnkr.co/edit/3OVE6qiWgJozUb3hyFQ5?p=preview

2 个答案:

答案 0 :(得分:0)

如果您想使模式生效,则需要将type属性设置为text。由于您还希望允许用户在输入字段中输入位,请添加onkeypress验证:

<input type="text"  onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" />

实际上,你甚至不需要ng-pattern regex。

答案 1 :(得分:-1)

你可以使用:

ng-pattern="/^[0-9]+$/"

不将输入类型设置为数字(默认为文本,它应该可以正常工作)。

这里是JSFiddle:https://jsfiddle.net/3ju3b2tu/1/