我有一个只接受数字作为输入的TextField。 出现的键盘允许输入以下字符:“ - (连字符),(逗号)。(句点)和空格”。如何阻止用户输入除句点以外的所有内容。
child: new TextField(
controller: _controller,
maxLengthEnforced: true,
keyboardType: TextInputType.number,
maxLength: 4, //9999 upper limit
), //TextField
我尝试使用RegExp来获取_controller文本,删除字符并将其放回到字段中而没有任何运气。
...//Add Listener to _controller
_controller.addListener(restrictCharacters);
...
//Listener
void restrictCharacters(){
RegExp regexp = new RegExp(
r"^|\-|\,|\ ",
caseSensitive: false,
multiLine: false,);
String text = _controller.text;
String chng = text.replaceaLL(regExp,"");
_controller.text = chng;
}
应用时,光标移动到开头,字段保持 - (连字符)例如。
答案 0 :(得分:18)
在您的TextInputField()中包括该参数
inputFormatters: [new WhitelistingTextInputFormatter(RegExp("[0-9]")),],
如果您只允许使用字母,则正则表达式为
inputFormatters: [new WhitelistingTextInputFormatter(RegExp("[a-zA-Z]")),],
答案 1 :(得分:7)
将此添加到您的TextField
中以获取字母和数字
inputFormatters: [new WhitelistingTextInputFormatter(RegExp("[a-zA-Z0-9]")),],
答案 2 :(得分:5)
WhitelistingTextInputFormatter
已过时。您应该使用FilteringTextInputFormatter.allow
:
inputFormatters: [ FilteringTextInputFormatter.allow(RegExp("[a-zA-Z]")), ]
或FilteringTextInputFormatter.deny
代替BlacklistingTextInputFormatter
答案 3 :(得分:3)
如果要添加 double ,还可以使用以下格式:
inputFormatters: [new FilteringTextInputFormatter.allow(RegExp("[0-9.]")),],
答案 4 :(得分:3)
Dart 2.13+,Flutter 1.27+
inputFormatters:[FilteringTextInputFormatter.allow(RegExp('[a-zA-Z0-9]'))]
答案 5 :(得分:2)
向BlacklistingTextInputFormatter
添加TextField
。
inputFormatters: [
new BlacklistingTextInputFormatter(new RegExp('[\\.]')),
],
仅删除.
如果您想要禁止,请说.
和,
将其更改为
inputFormatters: [
new BlacklistingTextInputFormatter(new RegExp('[\\.|\\,]')),
],
答案 6 :(得分:1)
对于那些需要在文本字段中使用money格式的人:
仅使用:"=m"
(逗号)和"m"
(句点)
并阻止符号:,
(连字符,减号或破折号)
以及.
(空白)
在您的TextField中,只需设置以下代码:
-
simbols 连字符和空格仍会出现在键盘中,但会被阻止。
答案 7 :(得分:0)
如果您还想在名称中包括英语和梵文 然后遵循此正则表达式模式 我为带有允许空间的英文字母和梵文字母创建了这种模式
inputFormatters: [ WhitelistingTextInputFormatter(RegExp("[a-zA-Z \u0900-\u097F]")),
LengthLimitingTextInputFormatter(30),
],
答案 8 :(得分:0)
您可以使用转义序列拒绝特殊字符 或从Google获得任何转义序列
示例:
inputFormatters: [
FilteringTextInputFormatter.deny(
RegExp("[a-zA-Z0-9\u0020-\u007E-\u0024-\u00A9]"),
),
],