我写了RegExp来检查电子邮件中的有效表单:
static bool isValidEmail(String email) {
RegExp regExp = RegExp(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+');
return regExp.hasMatch(email);
}
当然还有单元测试。但是这个测试失败了:
test("Two emails", () {
String email = "first.cringe.email@cringe.com second.cringe.email@cringe.com";
bool isValid = StringHelper.isValidEmail(email);
expect(isValid, false);
});
我已经在www.example.com和java上测试过这个案例regex101.com,所以rexExp是工作的。由于某种原因,Dart中的RegExp拆分字符串并检查第一封电子邮件,然后返回true。其他对一封电子邮件的测试(无论是否有效)都通过了。我如何修复这个问题?
1条答案
按热度按时间7gcisfzg1#
您应该添加
^
和$
,以便从字符串的开头搜索到结尾:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$
.这个正则表达式将检查整个字符串(是否是email)。
regex101.com