【问题标题】:Regex for double numbers in dart飞镖中双数的正则表达式
【发布时间】:2020-04-14 18:39:02
【问题描述】:

从我之前的问题开始,我试图只允许双格式的数字进入 TextField。我浏览了整个万维网,但没有找到 dart 的正则表达式。

TextFormField(
        inputFormatters: [
          WhitelistingTextInputFormatter(RegExp(r'\d*\.?\d+')) //<-- useless attempt to allow double digits only
        ])

【问题讨论】:

  • 检查这个正则表达式r'(^\d*\.?\d*)$'
  • @MidhunMP 谢谢...似乎可以工作,但是如果我按两次小数点,它会清除 TextField。知道是否可以修复吗?
  • @MidhunMP 看来我已经修复了r'(^\d*\.?\d*)' 你能回答吗,以便我可以将此问题标记为已回答?
  • @MidhunMP 不确定是否需要,但 RE 不适用于负数或带指数的数字。
  • @jamesdlin 我不需要负数。实际上我不想在我的 TextField 中使用负数

标签: regex flutter dart


【解决方案1】:

更新:

v1.20.0-1.0.pre 之后,WhitelistingTextInputFormatter 已被弃用。所以使用FilteringTextInputFormatter:

FilteringTextInputFormatter.allow(RegExp(r'(^\d*\.?\d*)'))

v1.20.0-1.0.pre之前:

你可以试试:

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

以下是此正则表达式的更严格版本。如果用户按下所需格式以外的任何无效字符,则该字段将被清除。

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

【讨论】:

  • WhitelistingTextInputFormatter 已被弃用。请改用FilteringTextInputFormatter
  • @SatriaSuria 感谢您的评论,我已经更新了答案
【解决方案2】:
 inputFormatters: [
      WhitelistingTextInputFormatter(RegExp("[0-9\.-]")),
      //..   1234..
      BlacklistingTextInputFormatter(
        RegExp(r'\.\.+'),
        replacementString: '.',
      ),
      // .23
      BlacklistingTextInputFormatter(
        RegExp(r'^\.'),
        replacementString: '0.',
      ),
      //.23423.
      BlacklistingTextInputFormatter(
        RegExp(r'\.\d+\.'),
      ),
      // 12341234-
      BlacklistingTextInputFormatter(RegExp(r'\d+-')),
      // .-
      BlacklistingTextInputFormatter(
        RegExp(r'\.-'),
        replacementString: '.',
      ),
      // -.34
      BlacklistingTextInputFormatter(RegExp(r'-\.+')),
      // 0232
      BlacklistingTextInputFormatter(RegExp(r'^0\d+'))
    ],

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多