检查 Dart 中的 String 容器是否是一组 Symbol 中的任何一个

Drk*_*Str 0 dart

我想检查一个字符串是否包含以下任何符号 ^ $ * 。[ ] { } ( ) ? - " !@#% & / \ , > < ' : ; | _ ~ ` + =

我尝试使用以下内容

string.contains(RegExp(r'[^$*.[]{}()?-"!@#%&/\,><:;_~`+=]'))
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何作用。我也无法添加'符号。

问题:

  1. 如何检查字符串是否包含一组符号中的任何一个?
  2. 如何'在我的正则表达式集合中添加符号?

mko*_*lys 8

当编写这样的RegExp模式时,您应该转义特殊符号(如果您想通过它们专门搜索)。

另外,要将 the 添加'到 the RegExp,没有直接的方法,但您可以使用字符串连接来解决此问题。

最终结果可能如下所示:

void main() {
  final regExp = RegExp(
    r'[\^$*.\[\]{}()?\-"!@#%&/\,><:;_~`+=' // <-- Notice the escaped symbols
    "'" // <-- ' is added to the expression
    ']'
  );
  
  final string1 = 'abc';
  final string2 = 'abc[';
  final string3 = "'";
  
  print(string1.contains(regExp)); // false
  print(string2.contains(regExp)); // true
  print(string3.contains(regExp)); // true
}
Run Code Online (Sandbox Code Playgroud)