在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)),
],
)
网友评论