keyboardType: TextInputType.number,
inputFormatters: [
WhitelistingTextInputFormatter(
RegExp("^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*\$"))
],
),
我在TextFormField中使用此设置,并使用了我从另一篇SO帖子中获取的正则表达式。在regex101.com上测试似乎还不错,但是我无法使用此regexp在表单上进行任何输入。
我使用regex的目标是获得两个十进制正浮点数。
Regex greater than zero with 2 decimal places
最佳答案
您可以使用
RegExp(r"^\s*\d*(?:\.\d{1,2})?\s*$")
^ ^
或者,如果您想保留“字符串中至少一个非零数字”的要求(正如您尝试过的正则表达式所暗示的那样):
RegExp(r"^(?=.*[1-9])\s*\d*(?:\.\d{1,2})?\s*$")
这里的重点是:
$
仅在不进行转义且在方括号中时才是字符串 anchor 的结尾^
之后。 模式详细信息
^
-字符串(?=.*[1-9])
-除换行符以外的任何0+字符后,必须有一个非零数字\s*
-0+空格\d*
-0 +数字(?:\.\d{1,2})?
-的可选序列\.
-点\d{1,2}
-1或2位数字\s*
-0+空格$
-字符串结尾。 关于regex - 在白名单中添加2个十进制正数配置后,TextField不接受输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56082799/