0

我需要检查 aTextFormField以确保用户只输入没有空格或其他符号的字母数字字符。

我正在使用The Validator颤振插件来验证我的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;
                            });
                          },
                        ),      

如果用户输入标签或空格,则会出现一条消息,上面写着“没有哈希/空格”。

但是,无论用户输入什么,都会出现“无哈希/空格”消息——即使它是干净的,没有符号或空格。

谁能看到我的正则表达式有什么问题?

4

2 回答 2

1

如果要匹配 1 个或多个字符,则必须使用重复字符类一次或多次+,否则它将匹配单个字符。

如果你想断言字符串的结尾,你可以使用$而不转义。

请注意,在这种情况下您不必转义-,但通常将其放在开头或结尾以防止意外将其用作范围。

r'^[a-zA-Z0-9_-]+$'
于 2021-05-16T12:36:30.807 回答
0

使用原始字符串文字,不要$在字符串含义的末尾转义并保持-到字符类的边缘。

还有,[a-zA-Z0-9_]= \w

利用

validator: FieldValidator.regExp(RegExp(r'^[\w-]$'),'No hash/space'),
于 2021-05-16T20:57:31.030 回答