美文网首页
Flutter TextField inputFormatter

Flutter TextField inputFormatter

作者: 星邪Ara | 来源:发表于2020-11-11 12:02 被阅读0次

在TextField的inputFormatters自定义身份证后发现输入不了,但是使用下面的验证是正常的

   ///身份证正则
  static const String REG_EXP_ID_CARD = r"^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$";

  ///验证身份证
  static bool isIdCard(String value) {
    return RegExp(REG_EXP_ID_CARD).hasMatch(value);
  }

问题写法

已开始我是这样写的,发现不行

 ///身份证正则
  static const String REG_EXP_ID_CARD = r"\d{17}[\d|x]|\d{15}";

   TextField(
     inputFormatters: [
     FilteringTextInputFormatter.allow(RegExp(REG_EXP_ID_CARD)),
     ],
    )

正常写法

后面我是几种方法都不行,就试了下是不是花括号 “{}” 的问题,结果还真是这个问题,正常来说花括号里面一个数字{n}的话应该是0到n,然后我再花括号里面加上了0 ,{0,n}就没问题了。

有点高心态啊

修改后就能输入了

 ///身份证正则
  static const String REG_EXP_ID_CARD = r"\d{0,17}[\d|X]|\d{0,15}";

   TextField(
     inputFormatters: [
     FilteringTextInputFormatter.allow(RegExp(REG_EXP_ID_CARD)),
     ],
    )

相关文章

网友评论

      本文标题:Flutter TextField inputFormatter

      本文链接:https://www.haomeiwen.com/subject/nbjebktx.html