You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:27:03