keyboardType: TextInputType.number,
inputFormatters: [
WhitelistingTextInputFormatter(
RegExp("^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*\$"))
],
),
我在TextFormField中使用此设置,并使用了我从另一篇SO帖子中获取的正则表达式。在regex101.com上测试似乎还不错,但是我无法使用此regexp在表单上进行任何输入。
我使用正则表达式的目标是获得两个十进制正浮点数。
答案 0 :(得分:0)
您可以使用
RegExp(r"^\s*\d*(?:\.\d{1,2})?\s*$")
^ ^
或者,如果您想保留“字符串中至少一个非零数字”的要求(如正则表达式所提示的那样):
RegExp(r"^(?=.*[1-9])\s*\d*(?:\.\d{1,2})?\s*$")
这里的重点是:
$
仅在不转义且不在方括号中时才是字符串锚点的结尾^
之后才能获得更好的性能。模式详细信息
^
-字符串的开头(?=.*[1-9])
-除换行符之外的任何0+字符后都必须有一个非零数字\s*
-超过0个空格\d*
-0位数以上(?:\.\d{1,2})?
-的可选序列
\.
-一个点\d{1,2}
-1或2位数字\s*
-超过0个空格$
-字符串的结尾。