首页 > 解决方案 > 带十进制数和普通数的计算器正则表达式

问题描述

我目前有一个带有正则表达式的验证功能,如下所示:

validateFormula(String value) {
    String pattern = (r'^\d+\.\d{1,2}$');
    RegExp regExp = new RegExp(pattern);
    if (value.length == 0) {
      return "Number cannot be empty";
    } else if (!regExp.hasMatch(value)) {
      return "Number not valid, always use decimal formaters. Ex: 1.0";
    }
    return null;
  }

上面的代码运行在一个简单的计算器应用程序中进行计算,但仅适用于十进制形式的输入数字和十进制。示例4.0 + 4.2等。如下图所示:

在此处输入图像描述

但是,当我输入一个数字而不是十进制数字时,它不想被计算在内,因为我创建的正则表达式仅适用于十进制数字。

在此处输入图像描述

如果我想计算如下:

1.6 + 1
1.66 + 1.66
1.667 - 1.111
1 * 1
1.56 / 1.56

小数点后最多 3 位

标签: regexflutterexpressioncalculator

解决方案


在这种情况下,您可以使用此正则表达式:

^[+-]?\d+((\.\d{,3})|\d*)$

允许正负整数或小数点后最多三位数字。


推荐阅读