Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 验证颤振中的TextFormField-什么';这个正则表达式怎么了?_Regex_Flutter_Validation_Dart_Textformfield - Fatal编程技术网

Regex 验证颤振中的TextFormField-什么';这个正则表达式怎么了?

Regex 验证颤振中的TextFormField-什么';这个正则表达式怎么了?,regex,flutter,validation,dart,textformfield,Regex,Flutter,Validation,Dart,Textformfield,我需要检查TextFormField,确保用户只输入字母数字字符,没有空格或其他符号 我正在使用Flatter的验证程序插件来验证我的TextFormField 我已经创建了一个控制器 var _tag1Controller = TextEditingController(); 和一个正则表达式验证器 TextFormField( controller: _tag1Controlle

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

我正在使用Flatter的验证程序插件来验证我的
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;
                            });
                          },
                        ),      
如果用户输入一个hashtag或空白,就会出现一条消息,上面写着“No hash/space”

但是,不管用户输入什么,都会出现“No hash/space”消息,即使它没有符号或空格


有人知道我的正则表达式有什么问题吗?

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

如果要断言字符串的结尾,可以使用
$
,而无需转义

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

r'^[a-zA-Z0-9_-]+$'

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

另外,
[a-zA-Z0-9][/code>=
\w

使用


你需要逃离\。最简单的方法是将
字符串
指定为原始字符串,方法是将
r
放在类似的前面:
r'^[a-zA-Z0-9\-\-\]\$'
。然后,它将忽略\的特殊含义,而只将\视为\。您可以尝试将两者结合使用!r'^[a-zA-Z0-9-!]+$如果你们中有人想把它作为答案,我会选择它。这需要julemand101在评论中建议的r。你能编辑一下读r'^[a-zA-Z0-9-!]+$'?@Meggy我已经用
r'
validator: FieldValidator.regExp(RegExp(r'^[\w-]$'),'No hash/space'),