Javaで正規表現を用いてメールアドレスの
構文をチェックするサンプルプログラムです。
正規表現
String mailFormat = "^[a-zA-Z0-9!#$%&'_`/=~\\*\\+\\-\\?\\^\\{\\|\\}]+(\\.[a-zA-Z0-9!#$%&'_`/=~\\*\\+\\-\\?\\^\\{\\|\\}]+)*+(.*)@[a-zA-Z0-9][a-zA-Z0-9\\-]*(\\.[a-zA-Z0-9\\-]+)+$";
全体コード
public class PatternMatch { public static void main(String[] args) { String mailFormat = "^[a-zA-Z0-9!#$%&'_`/=~\\*\\+\\-\\?\\^\\{\\|\\}]+(\\.[a-zA-Z0-9!#$%&'_`/=~\\*\\+\\-\\?\\^\\{\\|\\}]+)*+(.*)@[a-zA-Z0-9][a-zA-Z0-9\\-]*(\\.[a-zA-Z0-9\\-]+)+$"; String mail1 = "test"; String mail2 = "test@"; String mail3 = "test@example"; String mail4 = "test@example.com"; String mail5 = "test@example.co.jp"; String mail6 = "@example.com"; String mail7 = "@example.co.jp"; String mail8 = "test.co.jp@example.co.jp"; if( mail1.matches(mailFormat) ) { System.out.println( mail1 + " >> TRUE" ); } else { System.out.println( mail1 + " >> FALSE" ); } if( mail1.matches(mailFormat) ) { System.out.println( mail2 + " >> TRUE" ); } else { System.out.println( mail2 + " >> FALSE" ); } if( mail3.matches(mailFormat) ) { System.out.println( mail3 + " >> TRUE" ); } else { System.out.println( mail3 + " >> FALSE" ); } if( mail4.matches(mailFormat) ) { System.out.println( mail4 + " >> TRUE" ); } else { System.out.println( mail4 + " >> FALSE" ); } if( mail5.matches(mailFormat) ) { System.out.println( mail5 + " >> TRUE" ); } else { System.out.println( mail5 + " >> FALSE" ); } if( mail6.matches(mailFormat) ) { System.out.println( mail6 + " >> TRUE" ); } else { System.out.println( mail6 + " >> FALSE" ); } if( mail7.matches(mailFormat) ) { System.out.println( mail7 + " >> TRUE" ); } else { System.out.println( mail7 + " >> FALSE" ); } if( mail8.matches(mailFormat) ) { System.out.println( mail8 + " >> TRUE" ); } else { System.out.println( mail8 + " >> FALSE" ); } } }
解説
正規表現の比較はString関数[matches]の引数に
対象となるフォーマットを渡すことで可能です。
今回の例題における各返り値は下記の通りです。
変数[mail1] ==>「FALSE」
変数[mail2] ==>「FALSE」
変数[mail3] ==>「FALSE」
変数[mail4] ==>「TRUE」
変数[mail5] ==>「TRUE」
変数[mail6] ==>「FALSE」
変数[mail7] ==>「FALSE」
変数[mail8] ==>「TRUE」