在 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'),