Flutter:如何避免验证器中的特殊字符
Flutter: how to avoid special characters in validator
我有这个验证函数:
class FormFieldValidator{
static String validate(String value, String message){
return (value.isEmpty || (value.contains(**SPECIAL CHARACTERS**))) ? message : null;
}
}
我想表示可以不包含特殊字符,但是怎么表示呢?
您可以使用正则表达式来检查字符串是否为字母数字。
class FormFieldValidator {
static String validate(String value, String message) {
return RegExp(r"^[a-zA-Z0-9]+$").hasMatch(value) ? null : message;
}
}
这是一个更笼统的答案。
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_\-=@,\.;]+$');
-
和 .
被转义了。
2。测试一个字符串
validCharacters.hasMatch('abc123'); // true
validCharacters.hasMatch('abc 123'); // false (spaces not allowed)
在DartPad
中自己尝试
void main() {
final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\.;]+$');
print(validCharacters.hasMatch('abc123'));
}
我有这个验证函数:
class FormFieldValidator{
static String validate(String value, String message){
return (value.isEmpty || (value.contains(**SPECIAL CHARACTERS**))) ? message : null;
}
}
我想表示可以不包含特殊字符,但是怎么表示呢?
您可以使用正则表达式来检查字符串是否为字母数字。
class FormFieldValidator {
static String validate(String value, String message) {
return RegExp(r"^[a-zA-Z0-9]+$").hasMatch(value) ? null : message;
}
}
这是一个更笼统的答案。
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_\-=@,\.;]+$');
-
和 .
被转义了。
2。测试一个字符串
validCharacters.hasMatch('abc123'); // true
validCharacters.hasMatch('abc 123'); // false (spaces not allowed)
在DartPad
中自己尝试void main() {
final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\.;]+$');
print(validCharacters.hasMatch('abc123'));
}