Flutter TextFormField如何限制小数点前1-2位、小数点后最多3位输入
Flutter TextFormField 数值输入格式限制实现方案
要实现「小数点前1-2位数字、小数点后最多3位数字」的输入限制,可通过TextFormField自带的inputFormatters属性配合正则规则完成,具体步骤如下:
- 第一步:导入Flutter内置的services包,输入格式化类依赖该包:
import 'package:flutter/services.dart';
- 第二步:在
TextFormField中配置对应参数,完整示例如下:
TextFormField( // 限定弹出带小数点的数字键盘,避免用户输入其他字符 keyboardType: TextInputType.numberWithOptions(decimal: true), inputFormatters: [ // 正则校验:仅允许符合规则的内容输入 FilteringTextInputFormatter.allow( RegExp(r'^\d{1,2}(\.\d{0,3})?$'), ), ], // 可选:表单提交时二次校验,避免异常输入 validator: (value) { if (value == null || value.trim().isEmpty) { return '请输入数值'; } // 若要求小数部分必须输入1-3位,可把正则改为 r'^\d{1,2}(\.\d{1,3})?$' final matchReg = RegExp(r'^\d{1,2}(\.\d{0,3})?$'); if (!matchReg.hasMatch(value)) { return '格式错误:整数部分最多2位,小数部分最多3位'; } return null; }, decoration: InputDecoration( labelText: '数值输入', hintText: '示例:99.999', border: OutlineInputBorder(), ), )
正则规则说明
所用正则r'^\d{1,2}(\.\d{0,3})?$'的匹配逻辑:
^:匹配输入内容开头\d{1,2}:匹配1位或2位整数部分,符合小数点前位数要求(\.\d{0,3})?:匹配可选的小数部分,?表示整个小数段可省略,小数点后允许0-3位数字,适配用户输入小数点还未输入小数位的临时场景$:匹配输入内容结尾
内容的提问来源于stack exchange,提问作者Dhara Stackapp
相关产品推荐
相关产品推荐

