在dart

时间:2018-05-16 12:14:09

标签: regex dart flutter

我正在尝试在正则表达式中传递变量 语言DART

  `betweenLenth(val, field, [min = 4, max = 20]) {
     final RegExp nameExp = new RegExp(r'^\w{" + min + "," + max + "}$');
     if (!nameExp.hasMatch(val))
     return field + " must be between $min - $max characters ";
   }`

感谢

2 个答案:

答案 0 :(得分:1)

您不能对原始字符串使用字符串插值。

使用插值

final RegExp nameExp = new RegExp('^\\w{"$min","$max"}\$');
final RegExp nameExp = new RegExp('^\\w{$min,$max}\$');

连接

final RegExp nameExp = new RegExp(r'^\w{"' + min + '","' + max + r'"}$');
final RegExp nameExp = new RegExp(r'^\w{' + min + ',' + max + r'}$');

答案 1 :(得分:0)

您可以使用

betweenLenth(val, field, [min = 4, max = 20]) {
     final RegExp nameExp = new RegExp("^\\w{$min,$max}\$");
     if (!nameExp.hasMatch(val))
            return field + " must be between $min - $max characters ";
     return "Correct!";
}

生成的正则表达式为^\w{4,20}$

注意:

  • 使用非原始字符串文字以使用字符串插值
  • 在常规字符串文字中转义字符串锚点的末尾以定义文字$字符
  • 使用双反斜杠定义正则表达式转义序列("\\d"以匹配数字等)。