我具有此验证功能:
class FormFieldValidator{
static String validate(String value, String message){
return (value.isEmpty || (value.contains(**SPECIAL CHARACTERS**))) ? message : null;
}
}
我想指出不必包含特殊字符,但是我怎么说呢?
答案 0 :(得分:2)
您可以使用正则表达式检查字符串是否为字母数字。
class FormFieldValidator {
static String validate(String value, String message) {
return RegExp(r"^[a-zA-Z0-9]+$").hasMatch(value) ? null : message;
}
}
答案 1 :(得分:1)
这是一个较为笼统的答案。
在[ ]
方括号内添加所需的字符。 (您可以使用-
破折号来添加字符范围。):
// alphanumeric
static final validCharacters = RegExp(r'^[a-zA-Z0-9]+$');
上面的正则表达式匹配大小写字母和数字。如果需要其他字符,可以添加它们。例如,下一个正则表达式也匹配&
,%
和=
。
// alphanumeric and &%=
static final validCharacters = RegExp(r'^[a-zA-Z0-9&%=]+$');
某些字符在正则表达式中具有特殊含义,需要用\
反斜杠转义:
(
,)
,[
,]
,{
,}
,*
,+
,?
,.
,^
,$
,|
和\
。因此,如果您的要求是字母数字字符和_-=@,.;
,则正则表达式为:
// alphanumeric and _-=@,.;
static final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\.;]+$');
-
和.
被转义了。
validCharacters.hasMatch('abc123'); // true
validCharacters.hasMatch('abc 123'); // false (spaces not allowed)
void main() {
final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\.;]+$');
print(validCharacters.hasMatch('abc123'));
}