gpt4 book ai didi

validation - Flutter:验证 float

转载 作者:IT王子 更新时间:2023-10-29 07:01:02 24 4
gpt4 key购买 nike

我正在尝试让 dart 验证我的用户将在我的表单中输入的 float 。我从这个 SO 线程 ( Regular expression for floating point numbers ) 中获得了有关 float 正则表达式(例如 12.830)的指导,并在我的 flutter 应用程序中进行了尝试。

new TextFormField(
controller: amt_invested,
keyboardType: TextInputType.number,
inputFormatters: [WhitelistingTextInputFormatter(new RegExp(r'[+-]?([0-9]*[.])?[0-9]+'))],
decoration: const InputDecoration(
filled: true,
fillColor: CupertinoColors.white,
border: const OutlineInputBorder(),
labelText: 'Amount invested',
prefixText: '\R',
suffixText: 'ZAR',
suffixStyle:
const TextStyle(color: Colors.green)),
maxLines: 1,
validator: (val) => val.isEmpty ? 'Amount is required' : null,
),

但是,正则表达式阻止我在 float 中输入句号,这与 SO 线程所说的相反。我如何让它正常工作?

enter image description here

最佳答案

other thread 中向下滚动几行如果您想匹配 123.

部分

在这里,您确实想要匹配 123.,因为它是通向 123.45 的垫脚石。

因此,将您的 RegExp 更改为 new RegExp(r'^[+-]?([0-9]+([.][0-9]*)?|[.][0-9 ]+)$'); 当您使用数字键盘时,您可能可以省去前导 ^ 和尾随 $

这个例子

main() {
RegExp re;

re = new RegExp(r'[+-]?([0-9]*[.])?[0-9]+');
print(test(re, '1234'));
print(test(re, '1234.'));
print(test(re, '1234.5'));
print(test(re, '1234a'));
print(test(re, '1234..'));

print('---');

re = new RegExp(r'^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$');
print(test(re, '1234'));
print(test(re, '1234.'));
print(test(re, '1234.5'));
print(test(re, '1234a'));
print(test(re, '1234..'));
print(test(re, '1234 '));
}

输出

true
false <- this causes your problem
true
false
false
---
true
true
true
false
false
false

关于validation - Flutter:验证 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com