gpt4 book ai didi

regex - 为什么此正则表达式单元测试失败?

转载 作者:行者123 更新时间:2023-12-03 02:56:21 25 4
gpt4 key购买 nike

我正在使用Dart / Flutter编写应用程序。

我已经编写了此正则表达式函数来检查某些字符串:

  static final String nameOnCardRegex = r'^[\-A-Z `’\.\' '`]';
static final int nameOnCardMaxLength = 21;

static bool checkNameOnCard(String nameOnCardInput) {
if (nameOnCardInput == null ||
nameOnCardInput.length > nameOnCardMaxLength) {
return false;
}
return RegExp(nameOnCardRegex).hasMatch(nameOnCardInput);
}

我正在尝试使用此功能进行单元测试:
  test("[Name On Card String Validator] Check invalid Name On Card input 2",
() async {
expect(YouStrings.checkNameOnCard("TEST @NAME"), false);
});

我希望此函数返回false(因为我要传递 @字符)。
但是,它返回true。

测试结果:
package:test_api                                   expect
test/data/string_validator_module_test.dart 151:9 checkNameOnCardTest.<fn>
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
test/data/string_validator_module_test.dart checkNameOnCardTest.<fn>

Expected: <false>
Actual: <true>

最佳答案

看看regex101:https://regex101.com/r/AmJ0Rv/1

您的正则表达式与T中的TEST @NAME相匹配,因此,如果预期的答案不是true,则问题不在于代码而是正则表达式

尝试使用此:

^[-A-Z `’.\' '`]+

并检查结果是否与原始字符串相同。

另外,您可以使用此正则表达式:
[^-A-Z `’.\' '`]

如果匹配,则应返回 false,如果不匹配,则应返回 true。这个正则表达式的作用是检查是否有任何不允许的字符。

关于regex - 为什么此正则表达式单元测试失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702064/

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