Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex 带十进制数和普通数的计算器正则表达式_Regex_Flutter_Expression_Calculator - Fatal编程技术网

Regex 带十进制数和普通数的计算器正则表达式

Regex 带十进制数和普通数的计算器正则表达式,regex,flutter,expression,calculator,Regex,Flutter,Expression,Calculator,我目前有一个带有regex的验证函数,如下所示: 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)) {

我目前有一个带有regex的验证函数,如下所示:

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;
  }
1.6 + 1
1.66 + 1.66
1.667 - 1.111
1 * 1
1.56 / 1.56
上面的代码用于在简单的计算器应用程序中进行计算,但仅适用于十进制形式的输入数字。示例
4.0+4.2
等,如下图所示:

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

如果我想计算如下:

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;
  }
1.6 + 1
1.66 + 1.66
1.667 - 1.111
1 * 1
1.56 / 1.56

在这种情况下,小数后面最多有3位数字,您可以使用以下正则表达式:

^[+-]?\d+((\.\d{,3})|\d*)$
允许正负整数或小数点后最多有三位数字