首页 > 解决方案 > Flutter 中正则表达式验证中的十进制或有符号数值

问题描述

我正在尝试使用正则表达式验证来仅检查 Flutter App 中的十进制值或带符号的数值。

有效输入就像

我曾经WhitelistingTextInputFormatter限制用户输入。请参考以下代码:

TextFormField(
    key: AppKeys.emailField,
    keyboardType: TextInputType.emailAddress,
    controller: controller.emailTextController,
    inputFormatters: [
      WhitelistingTextInputFormatter(RegExp(r'[0-9-]\d*(\.\d+)?')),
    ],
    maxLength: 100,
    decoration: InputDecoration(
      labelText: Strings.emailPrompt,
      counterText: '',
      prefixIcon: Icon(Icons.email),
    ),
    //validator: Validator.validateEmail,
    onSaved: (String val) {
      //_email = val;
    },
  );

但这似乎不起作用。虽然它只适用于数字,但它不接受点字符。正则表达式还应该接受一个位于开头的减号字符和一个位于中间的点字符。

任何帮助都非常感谢。提前致谢。

标签: regexflutterdart

解决方案


这将正常工作。如果输入了无效字符,文本字段不会变为空白。

WhitelistingTextInputFormatter(RegExp(r'(^\-?\d*\.?\d*)')),

推荐阅读