当前位置: 首页 > 知识库问答 >
问题:

flutter TextFormField inputFormatters中不工作的十进制数的Regex

南门建章
2023-03-14
    null
TextFormField(
   controller: _textEditingController,
   keyboardType:TextInputType.numberWithOptions(decimal: true),
   inputFormatters: <TextInputFormatter>[
          WhitelistingTextInputFormatter(RegExp(r'^[[0-9]{0,8}(\.[0-9]{1,4})?$|^[[0-9]{0,9}(\.[0-9]{1,3})?$|^[[0-9]{0,10}(\.[0-9]{1,2})?$|^[[0-9]{0,11}(\.[0-9]{1})?$|^[0-9]{0,12}')),
   ],
),

使用上面的代码,我无法在TextFormField中键入点(.)

注意:用户不能在TextFormField中输入超过一个小数点的数字。

共有1个答案

罗学真
2023-03-14

请注意,如果要验证整个输入序列,则需要定义验证器:validateMyInput,然后实现以下函数:

String validateMyInput(String value) {
    RegExp regex = new RegExp(r'^(?=\D*(?:\d\D*){1,12}$)\d+(?:\.\d{1,4})?$');
    if (!regex.hasMatch(value))
      return 'Enter Valid Number';
    else
      return null;
  }

在Flutter中查看表单验证的更多细节。

regex是

^(?=\D*(?:\d\D*){1,12}$)\d+(?:\.\d{1,4})?$
    null
 类似资料:
  • 问题内容: 我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位? EG这是给定左侧十六进制的预期输出: 谢谢! 问题答案: 这似乎在欺骗Java转换数字而不强制给出正结果: 当然,这种情况仅适用于8、16、32和64位2的补码:

  • 问题内容: 我有一个家庭作业,需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受并返回的函数。不幸的是我没有此功能的任何草稿,我完全迷路了。我只有这个。 另外,我不能使用诸如Integer.toHexString()之类的预制函数或任何其他东西,我需要真正地制作算法,否则我什么都不会学。 问

  • 问题内容: 我试图将十进制数字截断到小数位。像这样: 所做的只是正确的事情,但是却舍入了价值。我不需要四舍五入的价值。希望这是可能的JavaScript。 问题答案: 更新 : 因此,无论如何,四舍五入的bug总是会困扰着您,无论您如何努力补偿它们。因此,应该通过精确地用十进制表示法来解决该问题。 旧的易出错的解决方案基于其他人的编译:

  • 问题内容: 我正在尝试将String十六进制转换为整数。从哈希函数(sha-1)计算出十六进制字符串。我收到此错误:java.lang.NumberFormatException。我猜它不喜欢十六进制的String表示形式。我该如何实现。这是我的代码: 例如,当我传递以下字符串: _DTOWsHJbEeC6VuzWPawcLA时 ,他的哈希值是: 0xC934E5D372B2AB6D0A50B9F

  • 问题内容: 我在java(JDK 1.4)中对小数的管理有问题。 我的 第一个* 和 第二个 有两个 双 精度数字(作为格式化 String的 输出)。我在拳头和秒针之间求和,并且我得到一个带有更多十进制数字的数字! *** __ 我宁愿不增加阈值( 0.5d ),因为在类似情况下我也不安全(当我开始编码时,规范将 0.1d 作为比较值)。如果这是唯一的解决方案,那么 0.9d 的值是解决此问题的

  • 我可以运行这个程序,但由于某些原因,它会显示/放置随机字符,而不是二进制的初始值,而且我似乎无法将程序从十进制运行回二进制。我该如何改进这些代码。要明确说明它不会将二进制转换为十进制,我将如何将其转换回十进制转换为二进制,如果有一些代码可以帮助我,将不胜感激。