Validation 颤振:如何避免验证器中的特殊字符

Validation 颤振:如何避免验证器中的特殊字符,validation,dart,flutter,special-characters,Validation,Dart,Flutter,Special Characters,我有这个验证功能: class FormFieldValidator{ static String validate(String value, String message){ return (value.isEmpty || (value.contains(**SPECIAL CHARACTERS**))) ? message : null; } } 我想指出,它不必包含特殊字符,但我怎么说呢?您可以使用正则表达式检查字符串是否为字母数字 class FormFieldVa

我有这个验证功能:

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 and &%=
static final validCharacters = RegExp(r'^[a-zA-Z0-9&%=]+$');
转义字符 某些字符在正则表达式中有特殊含义,需要用
\
反斜杠转义:

  • [
    ]
    {
    }
    *
    +
    ^
    $
因此,如果您的需求是字母数字字符和
-=@,则正则表达式为:

// alphanumeric and _-=@,.;
static final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\.;]+$');
-
被转义

2.测试字符串 你自己试试吧
您可以使用正则表达式来检查这一点,您可以检查您的数据是否只包含字母数字。我如何检查字符串是否包含所有空格或特殊字符,并使用正则表达式使其无效?@Aks,在没有亲自尝试的情况下,您可能可以创建一组类似于
[^abc]
的无效字符。然后,如果
hasMatch
返回true,您将知道所有内容都是无效字符。另一个选项是循环每个字符。这个字符的大小如何@Suragch@little_Friend,如果不尝试匹配双引号,则可以使用双引号而不是单引号。否则你可以做类似的事情。
// 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'));
}