Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证<;输入类型=";“数字”/&燃气轮机;使用AngularJS和Pattern/RegEx_Regex_Angularjs - Fatal编程技术网

验证<;输入类型=";“数字”/&燃气轮机;使用AngularJS和Pattern/RegEx

验证<;输入类型=";“数字”/&燃气轮机;使用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视

我有一个数字类型的输入,我想确保它只接受一个数字。我可以在服务器端做得很好,但是使用AngularJS我无法让它工作

代码如下:

<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上测试)