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