我有如下正则表达式代码(我正在使用VerbalExpression dart插件),我的目的是检查字符串是否以“ 36”开头,后跟“ 01”,“ 02”或“ 03”。 之后,只要整个字符串为16个字符长即可。

  var regex = VerbalExpression()
  ..startOfLine()
  ..then("36")
  ..then("01")
  ..or("02")
  ..anythingBut(" ")
  ..endOfLine();
String nik1 = "3601999999999999";
String nik2 = "3602999999999999";
String nik3 = "3603999999999999";

print('result : ${regex.hasMatch(nik1)}');
print('Hasil : ${regex.hasMatch(nik2)}');
print('Hasil : ${regex.hasMatch(nik3)}');

我的代码仅适用于nik1和nik2,但是我想要适用于nik3,我注意到我不能在or()之后放置or()进行多次检查,这只会给我所有错误的结果,我如何实现呢?

#1楼 票数:3 已采纳

我不熟悉VerbalExpression ,但是执行此操作的RegExp很简单。

const pattern = r'^36(01|02|03)\S{12}$';

void main() {
  final regex = RegExp(pattern);
  print(regex.hasMatch('3601999999999999'));    // true
  print(regex.hasMatch('3602999999999999'));    // true
  print(regex.hasMatch('3603999999999999'));    // true
  print(regex.hasMatch('360199999999999'));     // false
  print(regex.hasMatch('3600999999999999'));    // false
  print(regex.hasMatch('36019999999999999'));   // false
}

模式说明:

  • r前缀表示dart会将其解释为原始字符串(“ $”和“ \\”不视为特殊字符串)。
  • ^$表示字符串的开头和结尾,因此它将仅匹配整个字符串,而不能仅从字符串的一部分中找到匹配项。
  • (01|02|03) “ 01”或“ 02”或“ 03”。 | 表示“或”。 将其包装在括号中可使其知道在哪里停止OR。
  • \\S匹配任何非空白字符。
  • {12}表示前一个事物必须重复12次,因此\\S{12}表示任何12个非空白字符。

  ask by antonovria translate from so

未解决问题?本站智能推荐:

1回复

正则表达式在Dart中不返回匹配项,但适用于在线正则表达式测试器

我已经构建了一个应该匹配有效 HTTP 标头的正则表达式。 它可以在 regexr: https://regexr.com/4pnk9 上工作,使用正则表达式^([\\w\\-])+:(?!\\s*$).+$ 。 我正在使用全局、多行和不区分大小写的标志 (gim)。 然而,当我在我的 Flutte
1回复

用于验证邮政编码格式的dart正则表达式

我正在尝试创建正则表达式来验证所有邮政和邮政编码格式。 我找到了一个答案, 什么是最终的邮政编码和 zip 正则表达式? 但它在飞镖中不起作用。 以下是答案中的标准,这正是我正在寻找的 每个邮政编码系统仅使用 AZ 和/或 0-9,有时还使用空格/破折号 并非每个国家/地区都使用邮政编码(例如都柏林
1回复

Flutter/Dart-用于删除主题标签和空格的正则表达式?

要求用户填写一个不包含主题标签和空格的标签的字段。 但无论如何,有些人无疑会这样做。 如何在将其发送到数据库之前去除主题标签和空格? 这是我用来尝试简单删除主题标签的代码。 但是,尽管它在我输入字段时在控制台中实时打印正确的删除,但当我尝试将其发布到服务器时出现以下错误: 所以这是代码;
1回复

正则表达式,用于获取字符串的开始和结束匹配

我有一串单词。 我想要一个以 3 个反勾号开头和结尾的单词``` 。 如何使用正则表达式在颤振中完成此操作。 我试过这个(^```.*\\.```$)\\w+但它不能处理像Hello there, ```friend```, how are you doing?
2回复

Flutter无法解析正则表达式

Flutter无法解析此正在运行的正则表达式 ,并且不会返回任何错误或信息。 但是,当我将它添加到我的Flutter应用程序中时: 它什么都不做,不会返回任何错误。 print("after"); 永远不会被执行 它不会完全冻结应用程序,因为它处于异步状态。
1回复

单个正则表达式和组匹配(命名组)以确定在dart中已满足哪些条件

如果字符串与“至少八个字符”匹配,它将返回命名组八字符。 ' 如果字符串与“一个大写和小写字母”匹配,它将返回命名组Case 。 如果字符串与“至少一个数字或以下之一!#$%&*@”匹配,它将返回命名组Special 。 任何人都可以建议我如何做到这一点。 我的正则表达式工作不正常
2回复

使用正则表达式Dart/Flutter提取数据

我想从以下内容中提取数据 预期的输出是: 检查到目前为止我尝试过的示例
2回复

如何在Dart中使用正则表达式?

在 Flutter 应用程序中,我需要检查字符串是否与特定的 RegEx 匹配。 但是,我从应用程序的 JavaScript 版本复制的 RegEx 在 Flutter 应用程序中总是返回 false。 我在regexr上验证了 RegEx 是有效的,而且这个 RegEx 已经在 J​​avaScr