为什么Flutter FilteringTextInputFormatter正则表达式不工作?

unftdfkk  于 2023-06-24  发布在  Flutter
关注(0)|答案(3)|浏览(204)

在Flutter TextField上,我有以下FilteringTextInputFormatter
FilteringTextInputFormatter.allow(RegExp(r"^\d+\.?\d{1,2}"));
它试图匹配一个十进制数最多两个位置,但我不能输入任何数字到TextField
https://regexr.com/7fpho

ipakzgxi

ipakzgxi1#

完成后,不要基于以整个字符串为目标的正则表达式进行筛选。记住,要输入“hello world”,在某些时候,你必须输入“hello”和一个空格,这样你的正则表达式在最后不需要空格,在过滤器中会失败。
相反,在最终验证中使用正则表达式匹配。过滤器里没有。

ffvjumwh

ffvjumwh2#

试试这个

TextField(
                                      keyboardType: const TextInputType
                                          .numberWithOptions(
                                        decimal: true,
                                      ),
                                      inputFormatters: [
                                        FilteringTextInputFormatter.allow(
                                          RegExp(r'^\d*\.?\d{0,2}'),
                                        ),
                                      ],
                                    ),
c2e8gylq

c2e8gylq3#

在搞乱RegExr之后,我发现我想要的是:
RegExp(r"^\d{1,4}(\.\d{0,2})?")
此表达式允许四位数,小数点后两位。

相关问题