在 Flutter 中验证 TextFormField - 这个正则表达式有什么问题?
Validate TextFormField in Flutter - What's wrong with this Regex?
我需要检查 TextFormField
以确保用户只输入没有空格或其他符号的字母数字字符。
我正在使用 The Validator
flutter 插件来验证我的 TextFormField
。
我已经创建了一个控制器;
var _tag1Controller = TextEditingController();
和一个正则表达式验证器;
TextFormField(
controller: _tag1Controller,
validator: FieldValidator.regExp(RegExp('^[a-zA-Z0-9\-_]$'),'No hash/space'),
textAlign: TextAlign.center,
decoration: new InputDecoration(
hintText: 'Enter Tag 1',
),
onChanged: (tag1text) {
setState(() {
this.tag1 = tag1text;
});
},
),
如果用户输入主题标签或空格,则会出现一条消息,上面写着 'No hash/space'。
但是,无论用户输入什么,'No hash/space' 消息都会出现 - 即使它是干净的,没有符号或空格。
谁能看出我的正则表达式有什么问题?
如果要匹配 1 个或多个字符,则必须使用 +
重复字符 class 一次或多次,否则它将匹配单个字符。
如果要断言字符串结束,可以使用$
而不转义。
请注意,在这种情况下您不必对 -
进行转义,但通常将其放在开头或结尾以防止意外将其用作范围。
r'^[a-zA-Z0-9_-]+$'
使用原始字符串文字,不要在字符串含义的末尾转义 $
并保持 -
到字符 类.
的边缘
此外,[a-zA-Z0-9_]
= \w
。
使用
validator: FieldValidator.regExp(RegExp(r'^[\w-]$'),'No hash/space'),
我需要检查 TextFormField
以确保用户只输入没有空格或其他符号的字母数字字符。
我正在使用 The Validator
flutter 插件来验证我的 TextFormField
。
我已经创建了一个控制器;
var _tag1Controller = TextEditingController();
和一个正则表达式验证器;
TextFormField(
controller: _tag1Controller,
validator: FieldValidator.regExp(RegExp('^[a-zA-Z0-9\-_]$'),'No hash/space'),
textAlign: TextAlign.center,
decoration: new InputDecoration(
hintText: 'Enter Tag 1',
),
onChanged: (tag1text) {
setState(() {
this.tag1 = tag1text;
});
},
),
如果用户输入主题标签或空格,则会出现一条消息,上面写着 'No hash/space'。
但是,无论用户输入什么,'No hash/space' 消息都会出现 - 即使它是干净的,没有符号或空格。
谁能看出我的正则表达式有什么问题?
如果要匹配 1 个或多个字符,则必须使用 +
重复字符 class 一次或多次,否则它将匹配单个字符。
如果要断言字符串结束,可以使用$
而不转义。
请注意,在这种情况下您不必对 -
进行转义,但通常将其放在开头或结尾以防止意外将其用作范围。
r'^[a-zA-Z0-9_-]+$'
使用原始字符串文字,不要在字符串含义的末尾转义 $
并保持 -
到字符 类.
此外,[a-zA-Z0-9_]
= \w
。
使用
validator: FieldValidator.regExp(RegExp(r'^[\w-]$'),'No hash/space'),