# Javascript 電話番号フォーマット

Javascript で数字の電話番号をハイフォン入れてフォーマットする作業がありましたので、日本の電話番号について調べました。
固定電話の電話番号は==「0-市外局番-市内局番-加入者番号」==の電話番号となっていて 03 06 みたいの二桁から始まるものだけでなく、実際はたくさんの種類があります。
固定電話以外に携帯電話、フリーダイヤル、緊急公共電話番号もあるので、

電話番号とは

通話の相手を識別するために 0 から 9 までの数字組み合わせた番号は電話番号といいます。

電話番号の種類

  • 固定電話
  • 携帯電話
  • フリーダイヤル
  • 緊急公共電話番号

# 0XXX から始まる固定電話

基本的固定電話番号

市外通話

固定電話に電話する時に使います。(市外通話)
0XXX から始まる番号(X は 0 以外)
(0-市外局番-市内局番-加入者番号)

固定電話桁数

  • 0 プレフィックス
  • 市外局番-市内局番 合計5桁
    • 市外局番 1-4 桁
    • 市内局番 1-4 桁
  • 加入者番号 4桁

令和 3 年更新 総務省 市外局番一覧 (opens new window)

市内通話
2 ~ 9 から始まる番号

固定電話に電話する時に使います。(市内通話)
(市内局番-加入者番号)

# 00 から始まる中継経由番号

中継する電話会社を使って電話する時や国際電話をかける時に使います。

# 0X0 から始まる IP 電話番号 携帯番号 PHS 番号

携帯電話と PHS は 070 080 090から始まる 11 桁の番号です。
0X0 から始まる番号(X は 0 以外)

# 0XX0 で始まるフリーダイヤルなど特殊番号

0XX0 で始まる番号は、特殊なサービスを示しています。0120 0800 は通話料金着信払いのフリーダイヤルです。

0120 は 10 桁 、0800 は携帯電話、PHS と同様に 11 桁あります。

# 1 から始まる緊急公共電話番号

1 から始まる番号
緊急性、公共性、安全性の観点から重要な時や電気通信サービスの利用に当たって容易な認識が必要となる付加サービスに使います。

番号 利用方法
104 電話番号の案内
110 警察への通報
111 試験
115 電報受付
117 時報
118 海上保安機関への通報
119 消防への通報
171 災害用伝言ダイヤル
177 天気予報
188 消費者生活相談受付
189 児童虐待通告・児童相談受付

# 数字の電話番号をフォーマット

0352535000 を 03-5253-5000 のように自動フォーマット変換してくれる javascript ライブラリ google-libphonenumber 使います。

Validation 系

  • parseNumber(text, [defaultCountry], [options]): String
  • formatNumber(number, format, [options]): String
  • getNumberType(number, [defaultCountry]): String
  • isValidNumber(number, [defaultCountry]): Boolean

Format 系

  • E164: +818005003000
  • Original: 0800-500-3000
  • National: 0800-500-3000
  • International: +81 800-500-3000

CDN の場合

https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.1.10/libphonenumber-js.min.js

const telNumber = "08005003000";
const telFormated = new libphonenumber.AsYouType("JP").input(telNumber);

console.log(telFormated);
// 0800-500-3000

npm の場合

# npm
npm i google-libphonenumber

# yarn
yarn install google-libphonenumber

nodejs

const telNumber = "08005003000";
const GL = require("google-libphonenumber");
const PhoneNumberUtil = GL.PhoneNumberUtil;
const util = PhoneNumberUtil.getInstance();
const PhoneNumberFormat = GL.PhoneNumberFormat;

const tel = util.parseAndKeepRawInput(telNumber, "JP");
const telFormated = util.format(tel, PhoneNumberFormat.NATIONAL);

console.log(telFormated);
// 0800-500-3000

バージョンによって使える method 変わるので、要注意

オンライン playground
https://catamphetamine.gitlab.io/libphonenumber-js/

参考ドキュメント
https://gitlab.com/catamphetamine/libphonenumber-js/#cdn

2022-02-22
  • javascript

関連記事

Nuxt.js と Ant Design Vue 2 テーマカスタマイズ
JavaScript ライブラリ aos.js 使ってスクロール連動アニメーション
Jsconfig と Tsconfig
Cookie localStorage sessionStorage の違い
国際化 i18n と地域化 L10N
大きいファイルをスライス分割してアップロード
javascript 文字列と配列検索 indexOf findIndex find some includes 関数の違い
Javascript DataTables で excel 風 table 作る
javascript 配列 重複排除
bootstrap vuejs 使って generate する際に babel が icons ファイル max 500KB エラー
キーコード取得 & キーコード一覧
開発時によく使うゼロ埋めパディング作業まとめ
javascript  指定場所にスムーズにスクロールする方法
react 強制的にレンダリングする方法
Javascript var let const 変数宣言の違い
vuejs back to top button component 作成
Nuxtjs 動的なルーティング静的ページ自動生成
Sweet Alert swal に複数 content
moment.js 使って日本語曜日対応
javascript 開発で出会った TypeError
ReferenceError: location is not defined
vuejs で omisejapan の決済フォーム作成した時のメモ
ブラウザーで動く javascript のクッキー操作ライブラリ js-cookie
javascript reduce 連想配列の合計計算覚えよう
nuxtjs と codeigniter で jwt システム構築
nodejs 使う時のエラーたち
javascript で作る html から PDF 変換 pdfmake の日本語対応
javascript 楽しく遊ぼう!メッセージつぶやくウシ cowsay
Javascript vuejs の validation 正規表現でフォームチェック作ったときのメモ
正規表現一覧 よく使う検索・置換のパターン
javascript password generator ランダム文字列パスワード作成
javascript 日本語 shift-js 対応 CSV ダウンロード
開発におけるコーディングルール・規約