我想为巴基斯坦CNIC(12345-1234567-8)制作正则表达式。我搜索正则表达式,但在输入文本字段中没有任何价值。
我使用了下面的代码,但在我的输入字段中未键入任何内容。
inputFormatters: [WhitelistingTextInputFormatter(RegExp("^[0-9]{5}-[0-9]{7}-[0-9]{1}"))],
请帮助我如何使用它?
提前感谢。
您应该使自己拥有定制的inputFormatter
我帮你做
class NumberTextInputFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
final int newTextLength = newValue.text.length;
int selectionIndex = newValue.selection.end;
int usedSubstringIndex = 0;
final StringBuffer newText = new StringBuffer();
if (newTextLength >= 6) {
newText.write(newValue.text.substring(0, usedSubstringIndex = 5) + '-');
if (newValue.selection.end >= 5) selectionIndex += 1;
}
if (newTextLength >= 13) {
newText.write(newValue.text.substring(5, usedSubstringIndex = 12) + '-');
if (newValue.selection.end >= 12) selectionIndex += 1;
}
// Dump the rest.
if (newTextLength >= usedSubstringIndex)
newText.write(newValue.text.substring(usedSubstringIndex));
return new TextEditingValue(
text: newText.toString(),
selection: new TextSelection.collapsed(offset: selectionIndex),
);
}
}
并创建一个实例:
final _mobileFormatter = NumberTextInputFormatter();
并且您的FormField应该像这样:
TextField(
inputFormatters: [
WhitelistingTextInputFormatter.digitsOnly,
_mobileFormatter
],
maxLength: 15
),