Regex TextField不';在WhiteListingDeputFormatter中添加2个十进制正数配置后,不接受输入
我在我的TextFormField中使用这个设置,并使用我从另一篇SO文章中获取的正则表达式。在regex101.com上的测试似乎很好,但是我不能用这个regexp在我的表单上输入任何内容 我使用正则表达式的目标是得到两个十进制正浮点数 您可以使用Regex TextField不';在WhiteListingDeputFormatter中添加2个十进制正数配置后,不接受输入,regex,dart,flutter,Regex,Dart,Flutter,我在我的TextFormField中使用这个设置,并使用我从另一篇SO文章中获取的正则表达式。在regex101.com上的测试似乎很好,但是我不能用这个regexp在我的表单上输入任何内容 我使用正则表达式的目标是得到两个十进制正浮点数 您可以使用 keyboardType: TextInputType.number, inputFormatters: [ WhitelistingTextInp
keyboardType: TextInputType.number,
inputFormatters: [
WhitelistingTextInputFormatter(
RegExp("^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*\$"))
],
),
或者,如果您想保持“字符串中至少有一个非零数字”要求(正如您尝试的正则表达式所提示的那样):
这里的要点是:
- 您应该为正则表达式转义使用原始字符串文字来处理单个反斜杠
仅当未转义且不在方括号内时才是字符串结束锚定$
- 前瞻必须放在
之后才能获得更好的性能^
-字符串的开头^
-除换行符以外的任何0+字符后面必须有一个非零数字(?=.[1-9])
-0+空格\s*
-0+位\d*
-一个可选的(?:\。\d{1,2})
-一个点\。
-1或2位数字\d{1,2}
-0+空格\s*
-字符串结束$
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*$")