如何在 Dart 中使用正则表达式? [英] How to use RegEx in Dart?

查看:56
本文介绍了如何在 Dart 中使用正则表达式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In a Flutter application, I need to check if a string matches a specific RegEx. However, the RegEx I copied from the JavaScript version of the app always returns false in the Flutter app. I verified on regexr that the RegEx is valid, and this very RegEx is already being used in the JavaScript application, so it should be correct.

感谢任何帮助!

正则表达式:/^WS{1,2}://d{1,3}.d{1,3}.d{1,3}.d{1,3}:56789/i

测试代码:

RegExp regExp = new RegExp(
  r"/^WS{1,2}://d{1,3}.d{1,3}.d{1,3}.d{1,3}:56789/i",
  caseSensitive: false,
  multiLine: false,
);
print("allMatches : "+regExp.allMatches("WS://127.0.0.1:56789").toString());
print("firstMatch : "+regExp.firstMatch("WS://127.0.0.1:56789").toString());
print("hasMatch : "+regExp.hasMatch("WS://127.0.0.1:56789").toString());
print("stringMatch : "+regExp.stringMatch("WS://127.0.0.1:56789").toString());

输出:

allMatches : ()
firstMatch : null
hasMatch : false
stringMatch : null

推荐答案

我认为您试图在原始表达式字符串中包含选项,而您已经将其作为 RegEx 的参数(/i 不区分大小写被声明为 caseSensitive: false).

I think you tried to include options in the raw expression string while you already have it as parameters to RegEx ( /i for case insensitivity is declared as caseSensitive: false).

// Removed /i at the end
// Removed / in front - Thanks to Günter for warning
RegExp regExp = new RegExp(
  r"^WS{1,2}://d{1,3}.d{1,3}.d{1,3}.d{1,3}:56789",
  caseSensitive: false,
  multiLine: false,
);
print("allMatches : "+regExp.allMatches("WS://127.0.0.1:56789").toString());
print("firstMatch : "+regExp.firstMatch("WS://127.0.0.1:56789").toString());
print("hasMatch : "+regExp.hasMatch("WS://127.0.0.1:56789").toString());
print("stringMatch : "+regExp.stringMatch("WS://127.0.0.1:56789").toString());

给出:

allMatches : (Instance of '_MatchImplementation')
firstMatch : Instance of '_MatchImplementation'
hasMatch : true
stringMatch : WS://127.0.0.1:56789

这篇关于如何在 Dart 中使用正则表达式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆