验证<;输入类型=";“数字”/&燃气轮机;使用AngularJS和Pattern/RegEx
我有一个数字类型的输入,我想确保它只接受一个数字。我可以在服务器端做得很好,但是使用AngularJS我无法让它工作 代码如下:验证<;输入类型=";“数字”/&燃气轮机;使用AngularJS和Pattern/RegEx,regex,angularjs,Regex,Angularjs,我有一个数字类型的输入,我想确保它只接受一个数字。我可以在服务器端做得很好,但是使用AngularJS我无法让它工作 代码如下: <input type="number" ng-pattern="/[0-9]+/" name="numOfFruits" ng-model="basket.numOfFruits" /> 我怀疑这与我提供的模式有关。[0-9]+基本上,我只想要这个文本框中的数字,任何不是由数字0到9组成的东西,我希望输入无效 目前,我的输入字段将此aa23423视
<input type="number" ng-pattern="/[0-9]+/" name="numOfFruits" ng-model="basket.numOfFruits" />
我怀疑这与我提供的模式有关。[0-9]+
基本上,我只想要这个文本框中的数字,任何不是由数字0到9组成的东西,我希望输入无效
目前,我的输入字段将此
aa23423
视为有效输入 您需要使用锚点:
/^[0-9]+$/
:线锚的开始^
介于[0-9]+
和0
之间的一个或多个数字9
:线端锚点$
否则,
/[0-9]+/
将只匹配aa23423
的一部分,更准确地说是数字23423
,因此将为您提供有效信息。尝试将正则表达式定义为范围变量
在控制器中,它对我起了作用。下面是验证浮点数(正负)的regexp:
/^-?[0-9]\d*(\.\d+)?$/
在“文本”输入中使用此regexp,例如:
<input type="text" ng-model="score" ng-pattern="/^-?[0-9]\d*(\.\d+)?$/" required/>
模式不适用于使用
type=“number”
的输入您可以使用
type=“text”
并将值转换为数字@Ciwan然后问题就出在其他地方,正则表达式完全可以。谢谢,我刚才也在测试中尝试了您的正则表达式,它工作得非常好!!为什么在AngularJS中失败:/@Ciwan不幸的是,我不喜欢AngularJS。我只使用正则表达式。@Ciwan您使用的angular是什么版本的?它实际上不是AngularJS中的bug。一些浏览器在输入[type=number]
时,如果该值不是有效的数字,则会将该值更改为'
。所以Angular将''
评估为必需的无效,而不是数字或正则表达式。请看一下integerval的定义方式:如果用户输入的内容被视为数字(as of type=“Number”),则模式将捕获任何其他内容(即,如果指定字符串的长度,或者它是否可以包含点)。(在Firefox上测试)