Javaの正規表現で電話番号の形式を判定する方法を初心者向けにやさしく解説
生徒
「Javaで電話番号の入力チェックをしたいんですが、どうやって判定すればいいですか?」
先生
「その場合は、Javaの正規表現を使うと、電話番号の形式かどうかをまとめてチェックできます。」
生徒
「ハイフンがあったりなかったりして、ルールが分からなくて困っています……」
先生
「電話番号にはある程度決まった形があります。正規表現を使えば、その形をルールとして表現できます。」
生徒
「正規表現は難しそうですが、初心者でも理解できますか?」
先生
「大丈夫です。電話番号チェックは、正規表現の入門としてとても分かりやすい題材です。」
1. Javaで電話番号の形式チェックが必要な理由
JavaでWebアプリケーションや業務システムを作成していると、 電話番号の入力チェックが必要になる場面がよくあります。 会員登録フォームや問い合わせフォームなどでは、電話番号の入力が必須になることも多いです。
もし形式チェックを行わずに登録してしまうと、 数字以外の文字が混ざったり、桁数が足りなかったりする電話番号も通ってしまいます。 こうした問題を防ぐために、Javaの正規表現を使ったチェックが重要になります。
2. 日本の電話番号の基本的な形式を理解しよう
正規表現を書く前に、日本の電話番号の基本的な形式を知っておくことが大切です。 一般的な電話番号は、数字とハイフンで構成されています。 例としては「090-1234-5678」や「03-1234-5678」などがあります。
携帯電話番号と固定電話番号では桁数や区切り位置が異なる場合がありますが、 どちらも数字とハイフンの組み合わせという点は共通しています。 Javaの正規表現では、この構造をルールとして表現します。
3. Javaの正規表現で電話番号をチェックする考え方
Javaの正規表現では、「どんな文字が」「どの順番で」並んでいるかを指定します。 電話番号の場合は、「数字が何桁」「ハイフンがどこに入るか」といった条件を表します。
初心者のうちは、すべての電話番号パターンを完全に網羅しようとしなくて大丈夫です。 まずは、よく使われる一般的な形式をチェックできる正規表現を理解することが大切です。
4. ハイフンありの電話番号をチェックする正規表現
まずは、「090-1234-5678」のような、 ハイフン付きの電話番号をチェックする基本的な正規表現を見てみましょう。 Java初心者が最初に学ぶには、分かりやすい例です。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PhoneNumberCheckExample {
public static void main(String[] args) {
String phone = "090-1234-5678";
Pattern pattern = Pattern.compile("^\\d{2,4}-\\d{2,4}-\\d{4}$");
Matcher matcher = pattern.matcher(phone);
System.out.println(matcher.matches());
}
}
true
この正規表現では、数字とハイフンの位置関係をルールとして指定しています。 桁数をある程度柔軟にすることで、携帯電話番号と固定電話番号の両方に対応できます。
5. ハイフンなしの電話番号をチェックする方法
入力によっては、ハイフンなしで電話番号が入力されることもあります。 その場合は、数字だけで構成されているかどうかをチェックする正規表現を使います。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PhoneNumberNoHyphenExample {
public static void main(String[] args) {
String phone = "09012345678";
Pattern pattern = Pattern.compile("^\\d{10,11}$");
Matcher matcher = pattern.matcher(phone);
System.out.println(matcher.matches());
}
}
true
このように、Javaの正規表現を使えば、 ハイフンありとハイフンなしの電話番号を別々に判定できます。 入力形式に応じてルールを使い分けることがポイントです。
6. 不正な電話番号をチェックしてみる
正規表現が正しく動作しているかを確認するために、 不正な電話番号を使った例も見てみましょう。 これにより、形式チェックの効果が分かりやすくなります。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PhoneNumberInvalidExample {
public static void main(String[] args) {
String phone = "090-12AB-5678";
Pattern pattern = Pattern.compile("^\\d{2,4}-\\d{2,4}-\\d{4}$");
Matcher matcher = pattern.matcher(phone);
System.out.println(matcher.matches());
}
}
false
数字以外の文字が含まれているため、正規表現に一致せず false になります。 Javaの正規表現を使うことで、このような不正な入力を確実に防げます。
7. 電話番号チェックでよくある注意点
電話番号の形式は国や用途によってさまざまです。 そのため、正規表現で完全にすべてのケースを判定しようとすると、非常に複雑になります。
Java初心者の場合は、「一般的な日本の電話番号形式」をチェックできれば十分なケースがほとんどです。 必要に応じて、少しずつ正規表現を調整していく考え方が大切です。
8. Java初心者が正規表現で電話番号チェックを学ぶメリット
Javaの正規表現で電話番号をチェックできるようになると、 入力チェックのコードがとてもシンプルになります。 複雑な条件分岐を書かずに、短いルールで判定できる点が大きな魅力です。
また、正規表現の考え方はJava以外のプログラミング言語でも共通しています。 ここで基本をしっかり身につけておくことで、 今後のプログラミング学習や実務にも大いに役立ちます。