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 はほとんど正しいです。正規表現 [AZ]+ は、1 つ以上の大文字にマップされます。指定した正規表現がすべての文字 (小文字も含む) で機能する理由は、Pattern.CASE_INSENSITIVE が大文字と小文字の互換性を保証するためです。

于 2013-07-19T07:11:49.657 に答える