在白名单中添加 2 个小数正数配置后,文本字段不接受输入文本输入格式化程序


                keyboardType: TextInputType.number,
                inputFormatters: [
                  WhitelistingTextInputFormatter(
                      RegExp("^s*(?=.*[1-9])d*(?:.d{1,2})?s*$"))
                ],
              ),

我在TextFormfield中使用了此设置,并使用了我从另一个SO帖子中获得的这张正则。在Regex101.com上测试看起来不错,但是我无法使用此Regexp上的表格输入。

我的正则目标是获得两个小数点正浮点数。

将2个小数位置大于零的正则

您可以使用

RegExp(r"^s*d*(?:.d{1,2})?s*$")
       ^                         ^

或,如果要保留"至少一个非零数字在字符串中"的要求(作为将其提示的正则是这样(:

RegExp(r"^(?=.*[1-9])s*d*(?:.d{1,2})?s*$")

这里的重点是:

  • 您应该使用一个原始的字符串字面的正直逃脱来与单个后斜线一起使用
  • $仅在不逃脱并从方括号中脱离时,才是字符串锚的结尾
  • 必须在^之后放置LookAhead才能获得更好的性能。

模式详细信息

  • ^-字符串的开始
  • (?=.*[1-9])-除换期chars以外的任何0 字符之后,必须有一个非零数字
  • s*-0 Whitespaces
  • d*-0 数字
  • (?:.d{1,2})?-可选序列
    • .- dot
    • d{1,2}-1或2位数字
  • s*-0 Whitespaces
  • $-字符串的结尾。

最新更新