Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの正規表現を使って有効な携帯電話番号を検証するプログラム

Javaでは正規表現を利用することで、入力された携帯電話番号が有効かどうかを簡単にチェックできます。有効な携帯電話番号との一致を判定するには、次のような正規表現を使用します。

"\\d{10}"

正規表現のポイント

  • 有効な携帯電話番号は、一般的に10桁の数字で構成されます(インドの場合)。
  • メタ文字 \d は、0から9までの任意の数字1文字にマッチします。
  • 量指定子 {n} は、直前の要素がちょうどn回繰り返されることを意味します。つまり \d{10} は「数字がちょうど10桁並んでいる」ことを表します。

それでは、実際にJavaで携帯電話番号を検証するプログラムを2つの方法で見ていきましょう。

例1:PatternクラスとMatcherクラスを使用する方法

java.util.regex パッケージの Pattern クラスと Matcher クラスを使うと、正規表現をコンパイルして再利用可能な形で扱えます。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneNumberExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("名前を入力してください:");
        String name = sc.nextLine();
        System.out.println("電話番号を入力してください:");
        String phone = sc.next();

        // 有効な電話番号を受け付ける正規表現
        String regex = "\\d{10}";
        // Patternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを作成
        Matcher matcher = pattern.matcher(phone);

        // 入力された電話番号が有効かどうかを検証
        if(matcher.matches()) {
            System.out.println("入力された電話番号は有効です");
        } else {
            System.out.println("入力された電話番号は無効です");
        }
    }
}

実行結果1(有効な場合)

名前を入力してください:
krishna
電話番号を入力してください:
9848022338
入力された電話番号は有効です

実行結果2(桁数が足りない場合)

名前を入力してください:
krishna
電話番号を入力してください:
5465
入力された電話番号は無効です

実行結果3(桁数が多すぎる場合)

名前を入力してください:
krishna
電話番号を入力してください:
984802354655
入力された電話番号は無効です

例2:String.matches()メソッドを使用する方法

もっとシンプルに書きたい場合は、String クラスの matches() メソッドを直接使うこともできます。内部的には同じ正規表現エンジンが動作しています。

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("電話番号を入力してください:");
        String phone = sc.next();

        // 有効な電話番号を受け付ける正規表現
        String regex = "\\d{10}";
        // 入力された電話番号を正規表現と照合
        boolean result = phone.matches(regex);

        if(result) {
            System.out.println("入力された電話番号は有効です");
        } else {
            System.out.println("入力された電話番号は無効です");
        }
    }
}

実行結果1(有効な場合)

電話番号を入力してください:
9848022338
入力された電話番号は有効です

実行結果2(桁数が足りない場合)

電話番号を入力してください:
123
入力された電話番号は無効です

実行結果3(桁数が多すぎる場合)

電話番号を入力してください:
123654788755
入力された電話番号は無効です

補足:より厳密な検証を行いたい場合

"\\d{10}" は「10桁の数字であること」だけを確認するパターンです。実際の運用では、先頭の桁を限定したいケースもあります。たとえばインドの携帯電話番号は6〜9で始まるため、次のような正規表現を使うとより厳密な検証が可能です。

String regex = "[6-9]\\d{9}";

このように、[6-9] のような文字クラスと組み合わせることで、桁数だけでなく番号の形式そのものを細かく制御できます。用途に応じて正規表現をカスタマイズしてみてください。

  1. 【Java】素数を判定して次の素数を見つけるプログラムの作り方

    素数とは? 素数とは、1より大きい整数のうち、約数が「1」と「その数自身」の2つだけを持つ数のことです。それ以外の正の約数は一切持ちません。たとえば7は「7 = 1 × 7」としか分解できないため、素数です。 素数判定のアルゴリズム ある数が素数かどうかを調べるには、以下の手順が基本になります。 判定対象の整数を変数Aに代入する。 Aを2からA−1までの整数で順番に割っていく。 途中で一度でも割り切れたら、Aは素数ではない。 最後まで割り切れる数が現れなければ、Aは素数である。 なお、実際のプログラムでは「√Aまで調べれば十分」という性質を利用すると処理を大幅に高速化できます。これは、A

  2. Javaで回文を判定するプログラムの書き方【数値・文字列の実例付き】

    回文(パリンドローム)とは、逆から読んでも同じになる文字列や数値のことです。たとえば、121、313、525 といった数値や、「aba」「wow」のような文字列が回文に該当します。この記事では、Javaを使って回文を判定する方法を、数値の場合と文字列の場合の2つのパターンに分けて、サンプルコードと実行結果とともにわかりやすく解説します。回文数をチェックする方法数値が回文かどうかを判定するには、元の数値を1桁ずつ取り出して逆順に組み立て直し、元の値と比較します。具体的には、剰余演算(%10)で末尾の桁を取り出し、それを結果変数に10倍しながら加算していくことで反転した数値を作れます。サンプルコー