AngularJS 1.5.11中奇怪的验证器行为
我们的应用程序仍在使用AngularJS 1.5.11,但我已经用版本1.7.2测试了包含的示例,得到了相同的结果 问题在于AngularJS 1.5.11中奇怪的验证器行为,angularjs,angularjs-directive,angularjs-validation,Angularjs,Angularjs Directive,Angularjs Validation,我们的应用程序仍在使用AngularJS 1.5.11,但我已经用版本1.7.2测试了包含的示例,得到了相同的结果 问题在于validateNumber函数的奇怪行为。对于键入的每个字符,验证似乎在true和false之间切换。validateMin和validateMax功能按预期工作 示例代码可在此处找到: 关于为什么会发生这种情况有什么见解吗?也许这就是罪魁祸首 在同一全局正则表达式实例上多次调用的test()将超过上一个匹配项 最简单的解决方法可能是改变 var result = nu
validateNumber
函数的奇怪行为。对于键入的每个字符,验证似乎在true
和false
之间切换。validateMin
和validateMax
功能按预期工作
示例代码可在此处找到:
关于为什么会发生这种情况有什么见解吗?也许这就是罪魁祸首 在同一全局正则表达式实例上多次调用的
test()
将超过上一个匹配项
最简单的解决方法可能是改变
var result = numberRegexp.test(modelValue);
到
这里的正则表达式似乎有问题。使用时
var numberRegexp = new RegExp("^[-+]?\\d+(" + (decimalSeparator === "." ? "\\." : decimalSeparator) + "\\d*)?$", "i");
问题消失了。因此,似乎不应该使用原始的“g”标志。已经找到了答案,而且似乎是“g”(全局)标志导致了这一问题。但我也会试试你的建议。
var numberRegexp = new RegExp("^[-+]?\\d+(" + (decimalSeparator === "." ? "\\." : decimalSeparator) + "\\d*)?$", "i");