我正在使用Dart / Flutter编写应用程序。
我已经编写了此正则表达式函数来检查某些字符串:
tolower
我正在尝试使用以下功能对其进行单元测试:
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);
}
我希望此函数返回false(因为我要传递 test("[Name On Card String Validator] Check invalid Name On Card input 2",
() async {
expect(YouStrings.checkNameOnCard("TEST @NAME"), false);
});
字符)。
但是,它返回true。
测试结果:
@
答案 0 :(得分:2)
看看regex101:https://regex101.com/r/AmJ0Rv/1
您的正则表达式与T
中的TEST @NAME
相匹配,因此,如果预期的答案不是true
尝试使用此:
^[-A-Z `’.\' '`]+
并检查结果是否与原始字符串相同。
或者,您可以使用此正则表达式:
[^-A-Z `’.\' '`]
如果存在匹配项,则应返回false
,如果不存在,则应返回true
。此正则表达式的作用是检查是否存在不允许的任何字符。