【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

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

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*