gpt4 book ai didi

regex - 正则表达式在Dart中未返回任何匹配项,但可用于在线正则表达式测试器

转载 作者:行者123 更新时间:2023-12-03 03:24:42 29 4
gpt4 key购买 nike

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

但是,当我在Flutter项目中实现它时,它什么都不匹配。除此之外,Dart没有提供在RegExp中启用全局功能的方法。

谁能解释我为什么该正则表达式可以在regexr.com上运行,但不能在我的Dart测试中使用吗?

class Validators {
static final RegExp _headerFieldsRegExp = RegExp(
"^([\w\-])+:(?!\s*\$).+\$",
multiLine: true,
caseSensitive: false);

static bool headerFieldsValid(String headerFields) {
if (headerFields == null || headerFields.length == 0) {
return false;
}
String match = _headerFieldsRegExp.stringMatch(headerFields);
if (match == null) {
return false;
}
return headerFields.length == match.length;
}
}
void main() {
test('Test validating header fields', () {
String valid1 = 'Accept: json\nAuthorization: Bearer 12345';
expect(true, Validators.headerFieldsValid(valid1));

String valid2 = 'Accept: json\nAuthorization: Bearer 12345\n';
expect(true, Validators.headerFieldsValid(valid2));

String invalid1 = 'Accept: json\nAuthorization:\n';
expect(false, Validators.headerFieldsValid(invalid1));

String invalid2 = 'Accept: json\n\nAuthorization: Bearer 12345\n';
expect(false, Validators.headerFieldsValid(invalid2));
});
}

最佳答案

您可以使用

r"^([\w-])+:(?!\s*$).+$"

要么
"^([\\w-])+:(?!\\s*\$).+\$"

请注意,在非原始字符串文字中,双反斜杠代表单个文字反斜杠。在原始字符串文字中,您不需要转义 $符号,并且只需要单个反斜杠即可形成正则表达式转义。

关于regex - 正则表达式在Dart中未返回任何匹配项,但可用于在线正则表达式测试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085824/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com