Java

Javaで電話番号のチェックを実装する方法

2020年9月9日

はじめに

Javaで電話番号のチェックを実装する方法を紹介します。

まず固定電話は以下の形式です。

  • 国内プレフィックス「0」:1桁
  • 市外局番(1~4桁)/市内局番(1~4桁):合計5桁
  • 加入者番号:4桁

市外局番と市内局番は合計で5桁であり、電話番号が多く必要な地域では市内局番の桁数が多くなっています。

国内プレフィックス市外局番市内局番
0〇〇〇〇東京(03-3264-0000)
〇〇〇〇〇横浜(045-901-0000)
〇〇〇〇〇旭川(0166-25-0000)
〇〇〇〇伊豆大島(04992-2-0000)

 

更に携帯電話やIP電話は次のような形式です。

  • 070-1234-1234
  • 080-1234-1234
  • 090-1234-1234
  • 050-1234-1234

本記事では、固定電話と携帯電話に対応した、Javaの正規表現を使った電話番号チェックを紹介します。

スポンサーリンク

正規表現による電話番号チェック

正規表現を使った電話番号のチェックは次の通り。

/**
 * 電話番号チェック
 * @param value 検証対象の値
 * @return 結果(true:電話番号、false:電話番号ではない)
 */
public static boolean isPhoneNumber(String value) {
    boolean result = false;

    if (value != null) {
        Pattern pattern = Pattern.compile("0\d{1,4}-\d{1,4}-\d{4}");
        result = pattern.matcher(value).matches();
    }

    return result;
}

動作確認

System.out.println("空文字:" + isPhoneNumber(""));
System.out.println("NULL:" + isPhoneNumber(null));
System.out.println("【東京】03-3264-0000:" + isPhoneNumber("03-3264-0000"));
System.out.println("【横浜】045-901-0000:" + isPhoneNumber("045-901-0000"));
System.out.println("【旭川】0166-25-0000:" + isPhoneNumber("0166-25-0000"));
System.out.println("【伊豆大島】04992-2-0000:" + isPhoneNumber("04992-2-0000"));
System.out.println("【桁不足】0-12345-0000:" + isPhoneNumber("0-12345-0000"));
System.out.println("【桁超過】01-12345-0000:" + isPhoneNumber("01-12345-0000"));
System.out.println("【不正文字】01-1234-a0000:" + isPhoneNumber("01-1234-00000"));
System.out.println("【携帯】070-1234-1234:" + isPhoneNumber("070-1234-1234"));
System.out.println("【携帯】080-1234-1234:" + isPhoneNumber("080-1234-1234"));
System.out.println("【携帯】090-1234-1234:" + isPhoneNumber("090-1234-1234"));
System.out.println("【IP電話】050-1234-1234:" + isPhoneNumber("050-1234-1234"));
System.out.println("【フリーダイアル】0120-123-123:" + isPhoneNumber("0120-123-123"));
System.out.println("【ハイフンなし】0332642000:" + isPhoneNumber("0332642000"));

【実行結果】

  • 空文字:false
  • NULL:false
  • 【東京】03-3264-0000:true
  • 【横浜】045-901-0000:true
  • 【旭川】0166-25-0000:true
  • 【伊豆大島】04992-2-0000:true
  • 【桁不足】0-12345-0000:false
  • 【桁超過】01-12345-0000:false
  • 【不正文字】01-1234-a0000:false
  • 【携帯】070-1234-1234:true
  • 【携帯】080-1234-1234:true
  • 【携帯】090-1234-1234:true
  • 【IP電話】050-1234-1234:true
  • 【フリーダイアル】0120-123-123:false
  • 【ハイフンなし】0332642000:false
ただし、上記の正規表現では「0000-000-0000」などもチェックOKになってしまうので、あくまでも形式のチェックであり、完全なチェックではありませんのでご注意ください。

最後に

本記事ではJavaで電話番号のチェックを実装する方法を紹介しました。

【関連記事】

helpful