Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 TextField不';在WhiteListingDeputFormatter中添加2个十进制正数配置后,不接受输入_Regex_Dart_Flutter - Fatal编程技术网

Regex TextField不';在WhiteListingDeputFormatter中添加2个十进制正数配置后,不接受输入

Regex TextField不';在WhiteListingDeputFormatter中添加2个十进制正数配置后,不接受输入,regex,dart,flutter,Regex,Dart,Flutter,我在我的TextFormField中使用这个设置,并使用我从另一篇SO文章中获取的正则表达式。在regex101.com上的测试似乎很好,但是我不能用这个regexp在我的表单上输入任何内容 我使用正则表达式的目标是得到两个十进制正浮点数 您可以使用 keyboardType: TextInputType.number, inputFormatters: [ WhitelistingTextInp

我在我的TextFormField中使用这个设置,并使用我从另一篇SO文章中获取的正则表达式。在regex101.com上的测试似乎很好,但是我不能用这个regexp在我的表单上输入任何内容

我使用正则表达式的目标是得到两个十进制正浮点数

您可以使用

                keyboardType: TextInputType.number,
                inputFormatters: [
                  WhitelistingTextInputFormatter(
                      RegExp("^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*\$"))
                ],
              ),
或者,如果您想保持“字符串中至少有一个非零数字”要求(正如您尝试的正则表达式所提示的那样):

这里的要点是:

  • 您应该为正则表达式转义使用原始字符串文字来处理单个反斜杠
  • $
    仅当未转义且不在方括号内时才是字符串结束锚定
  • 前瞻必须放在
    ^
    之后才能获得更好的性能
图案细节

  • ^
    -字符串的开头
  • (?=.[1-9])
    -除换行符以外的任何0+字符后面必须有一个非零数字
  • \s*
    -0+空格
  • \d*
    -0+位
  • (?:\。\d{1,2})
    -一个可选的
    • \。
      -一个点
    • \d{1,2}
      -1或2位数字
  • \s*
    -0+空格
  • $
    -字符串结束
Try
RegExp(r“^(?=.[1-9])\s*\d*(?:\。\d{1,2})?\s*$”
。顺便问一下,你的正则表达式规则是什么?可能
(?=.[1-9])
是冗余的,它至少需要一个非0位。
RegExp(r"^\s*\d*(?:\.\d{1,2})?\s*$")
       ^                         ^
RegExp(r"^(?=.*[1-9])\s*\d*(?:\.\d{1,2})?\s*$")