角度正则表达式不应该允许负数,但它允许负整数

时间:2017-09-20 21:13:00

标签: javascript regex angular

我有以下正则表达式:^(?!0*(\.0+)?$)[0-9]{0,9}(\.[0-9]{1,4})?$

在javascript的在线正则表达式构建器中测试它时,它按预期工作,但是当我在我的角应用程序(角度4)中使用它时,它应该允许负数整数。

根据我的理解,这个正则表达式应该允许任何高于零的正数,最多4位小数,最多9位小数,这意味着正好零不匹配,任何负数都不匹配,任何&# 39;不是数字不匹配。

为什么有角度的东西像' -32'成为一个匹配? ' -32.2'应该是无效的。我怎样才能改变它以使角度快乐?

我正在以反应的形式使用它:

let regExNotZero =  new RegExp('^(?!0*(\.0+)?$)[0-9]{0,9}(\.[0-9]{1,4})?$');
...
Quantity: [item.quantity, Validators.pattern(regExNotZero)
...

数量只是表格组内的一个控件,使用角度的反应形式。

1 个答案:

答案 0 :(得分:1)

解决方案是将其更改为^(?!0*(\\.0+)?$)[0-9]{0,9}(\\.[0-9]{1,4})?$

需要双反斜杠,没有它javascript试图将反斜杠后的内容视为特殊字符。