flutter 如何修复RegExp中的 dart 分割字符串?

hgncfbus  于 2022-12-27  发布在  Flutter
关注(0)|答案(1)|浏览(174)

我写了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。其他对一封电子邮件的测试(无论是否有效)都通过了。我如何修复这个问题?

7gcisfzg

7gcisfzg1#

您应该添加^$,以便从字符串的开头搜索到结尾:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$.
这个正则表达式将检查整个字符串(是否是email)。
regex101.com

相关问题