在Flutter应用程序中,我需要检查字符串是否匹配特定的RegEx。然而,我从JavaScript版本的应用程序中复制的RegEx * 总是 * 在Flutter应用程序中返回false。我在regexr上验证了RegEx是有效的,并且这个RegEx已经在JavaScript应用程序中使用,所以它应该是正确的。
任何帮助是赞赏!
RegEx:/^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
2条答案
按热度按时间jpfvwuh41#
这是对未来观众的一个更普遍的回答。
Dart中的正则表达式与其他语言的工作原理非常相似。您使用
RegExp
类定义匹配模式。然后使用hasMatch()
在字符串上测试模式。示例
字母数字的
十六进制颜色
提取文本
还有更多的例子here。
参见:
carvr3hs2#
我认为您试图在原始表达式字符串中包含选项,而您已经将其作为RegEx的参数(/i,不区分大小写被声明为caseSensitive:false)。
提供: