0

我正在使用这种方法来验证 Java 中的电子邮件。我想了解它。有人可以解释这个表达式排除和包含的内容吗

String expression = [A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4};

以下是完整方法:

public static boolean isValid(String email)
{
   //String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
   String expression = "[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}";
   //String expression = "^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";
   CharSequence inputStr = email;
   Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
   Matcher matcher = pattern.matcher(inputStr);
   if (matcher.matches()) 
   {
      return true;
   }
   else{
   return false;
   }
}
4

2 回答 2

3

Simranjeet is mostly correct. The regex [A-Z]+ maps to one or more UPPERCASE letters. The reason the regex you've given works for all letters (even lowercase) is that Pattern.CASE_INSENSITIVE ensures upper/lowercase compatibility,

于 2013-07-19T07:11:49.657 回答
1
  • [A-Z0-9._%+-]+ 邮件地址的第一部分可以包含所有字符、数字、点、下划线、百分比、加号和减号。

  • @@ 字符是强制性的

  • [A-Z0-9.-]+邮件地址的第二部分可以包含所有字符、数字、点、下划线。
  • \。该点是强制性的
  • [AZ]{2,4} 域名可以包含所有字符。字符数限制在 2 到 4 之间。

请参阅此链接“ http://www.sw-engineering-candies.com/blog-1/howtofindvalidemailaddresswitharegularexpressionregexinjava

于 2013-07-19T06:37:15.853 回答