【Java入門】電話番号の正規表現の書き方!

電話番号の正規表現
  • このエントリーをはてなブックマークに追加
  • Pocket

新規登録のフォームを作成しているときなど、電話番号を正規表現で確認してエラーチェックをしたいということはよくあるだろう。なんらかのデータ移行作業にJavaを使っているようなときも同様だ。

このページではJavaおよび他のプログラミング言語で、電話番号をどうやって正規表現で書けばいいかをまとめている。参考にしてほしい。

正規表現による電話番号の扱い方

Javaの正規表現を使うと、電話番号のチェックをしたりテキストの中から電話番号を抽出したりすることができる。

最初に、対象となる電話番号はどのような形式があるのかを確認しておこう。固定電話の場合は、先頭が0である、その後市外局番と市内局番をあわせた5桁の数字、さらに4桁の加入者番号の数字が続く。市外局番と市内局番は地域によってその桁数が異なっている。市外局番、市内局番と加入者番号の各番号は、一般的にハイフン[-]で区切られている。

  • 03-2222-2222 (東京)
  • 0422-22-2222 (東京都小金井市)

また、最初の0と市外局番が括弧[( )]で囲まれる形式もある。

  • (03)2222-2222
  • (0422)22-2222

携帯電話の場合は、先頭の3文字が070、080、090である。その後、4桁の数字、さらに4桁の数字が続く。

  • 070-2222-2222
  • 080-2222-2222
  • 090-2222-2222

IP電話の場合は、先頭の3文字が050である。その後、携帯電話と同じように4桁の数字、さらに4桁の数字が続く。

  • 050-2222-2222

フリーダイヤルの場合は、先頭が0120である。その後、3桁の数字、さらに3桁の数字が続く。

  • 0120-222-222

Javaにおける電話番号の正規表現

では、これらの電話番号の正規表現はどうなるかを見てみよう。電話番号と対応する正規表現は以下のようになる。固定電話は、市外局番と市内局番の形式が他にもあるが、ここではその中のふたつを取り上げた。

基本は次のような表記になる。

0\d{1,4}-\d{1,4}-\d{4}

電話番号の種類

電話番号

正規表現

固定電話

03-2222-2222

^0\d-\d{4}-\d{4}$

0422-22-2222

^0\d{3}-\d{2}-\d{4}$

(03)2222-2222

^\(0\d\)\d{4}-\d{4}$

(0422)22-2222

^\(0\d{3}\)\d{2}-\d{4}$

携帯電話

070-2222-2222

080-2222-2222

090-2222-2222

^(070|080|090)-\d{4}-\d{4}$

IP電話

050-2222-2222

^050-\d{4}-\d{4}$

フリーダイヤル

0120-222-222

^0120-\d{3}-\d{3}$

各プログラミング言語における正規表現表記

この比較表は、Java以外のプログラミング言語で東京の固定電話番号の正規表現を扱うとどうなるかを示している。

電話番号

言語

正規表現

03-2222-2222

Java

^0\d-\d{4}-\d{4}$

Ruby

Javaと同じ

PHP

/^0\d-\d{4}-\d{4}$/

C/C++

Javaと同じ

電話番号をチェックするサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。このサンプルプログラムでは、電話番号が形式に合致しているかどうか正規表現を使ってチェックしている。電話番号「03-2222-1111」については、番号が正しい場合だけでなく、誤った場合に不正な番号として検出されることも確認している。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このサンプルプログラムでは、正しい形式の電話番号と誤った形式の電話番号をチェックして、正規表現によって正しくチェックが行われるかをテストしている。

テストに使用した正しい形式の電話番号は次の通りである。

電話番号の種類

電話番号

固定電話

03-2222-2222

(03)3333-4444

携帯電話

070-5555-6666

IP電話

050-7777-8888

フリーダイヤル

0120-222-222

テストに使用した誤った形式の電話番号は次の通りである。

電話番号

不正な箇所

0-1111-2222

最初の2桁の桁数が不足

03-111-2222

2番目の4桁の桁数が不足

03-1111-222

最後の4桁の桁数が不足

031-1111-2222

最初の2桁の桁数が超過

03-11111-2222

2番目の4桁の桁数が超過

03-1111-22221

最後の4桁の桁数が超過

0X-1111-2222

最初の2桁の桁に数値以外の文字の混入

03-111X-2222

2番目の4桁の桁に数値以外の文字の混入

03-1111-222X

最後の4桁の桁に数値以外の文字の混入

03A1111-2222

最初のハイフンがハイフン以外の文字

03-1111A2222

最後のハイフンがハイフン以外の文字

正しい形式ならば、電話番号の種類に加えて形式にマッチした電話番号を表示する。また、どの形式にもマッチしなかったならば、「不正な電話番号」として元の文字列をそのまま表示している。

まとめ

このページでは電話番号の正規表現の書き方をまとめてきた。Javaをメインとして他の言語でも、書き方を簡単にお伝えしている。

電話番号の正規表現を使うときには確認してみて欲しい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. no name より:

    固定電話が2桁とは正しい情報ですか?

    参考URL:http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a.html

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      「固定電話の場合は、先頭が0である、その後市外局番と市内局番をあわせた5桁の数字、さらに4桁の加入者番号の数字が続く」という記述はありますが、ご指摘に該当する箇所はどの文章になりますでしょうか。
      お手数ですがご教示いただけますと幸いです。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する