https://a.storyblok.com/f/270183/1368x665/0e228316b7/what-is-e164.png

E.164フォーマットとは?

最終更新日 October 23, 2024

所要時間:1 分

E.164は、世界中の各ユーザーが固有の電話番号を持つことを保証し、電話やメッセージのために相互に接続することを可能にする電話番号スキームを定義する国際規格である。その結果、この規格は は国際電話を簡素化し、間違った番号にダイヤルするリスクを低減します。

E.127規格によると E.127規格E.127規格によると、電話番号には地理的エリア、グローバルサービス、ネットワークなど、さまざまな指定方法があります。この記事では 地域これはVonage APIで使用されている形式です。

E.164フォーマット

E.164は最大15桁で、以下のフォーマットに従っている:

[国番号] [国宛先コード] [加入者番号]

どこだ?

  • 国コード(CC)国際的な 国別通話コード(1~3桁)に対応する。慣習上、国際電話番号は国番号の前にプラス記号(+)を付けて表されます。

  • ナショナル・デスティネーション・コード(NDC)国内の特定のエリア、地域、ネットワークを識別する。

  • 加入者番号(SN)はユーザーに割り当てられた個別の電話番号。NDCとSNの長さは15からCCの長さを引いたものでなければならない。


米国

電話番号212 123 1234は、E.164形式を使用して+12121231234と表すことができます:

  • +1がアメリカの国番号。

  • 212はNDCだ。

  • 1231234は加入者番号。

イギリス

電話番号 020 1234 5678は、E.164フォーマットでは+4と表現できます。42012345678、ここで

  • +44はイギリスの国番号です。

  • 20はロンドンの市外局番。

  • 1231234は加入者番号。

スペイン

電話番号91 234 5678は、E.164では+34912345678と表されます:

  • +34はスペインの国番号です。

  • 91はマドリードの市外局番。

  • 2345678は加入者番号。

ドイツ

電話番号 030 12345678 は E.164 では +493012345678 と表されます:

  • +49はドイツの国番号です。

  • 30はベルリンの市外局番である。

  • 12345678は加入者番号。

なぜE.164が重要なのか?

私たちのAPIの多くは、E.164標準に従って電話番号を使用しています。特にネットワークAPIでは、APIコンシューマーがいくつかのエンドポイントを呼び出す際に、この形式に従うことを期待している。

例えば Identity Insights APIは、加入者の電話番号を E.164 形式で受け付ける。SIM が最近その番号にリンクされたかどうか、元のキャリアと現在のキャリアなどの情報が返される。

E.164の電話番号を検証するには?

開発者として、ユーザーの入力が正しいことを確認することは不可欠である。これには、APIコールを行う前に、電話番号がE.164フォーマットに従っていることをサニタイズ、検証、確認することが含まれる。これは時間と帯域幅の節約になる。

一つの解決策は、電話番号の検証を助ける既存のライブラリの一つを使うことである。

をチェックしてみてください。 電話ライブラリをチェックしたいかもしれない。.次の例は、電話番号のバリデーションです:

const {phone} = require('phone');

phone('+1(817) 569-8900', {country: '"USA'}); 

/* 
{  isValid: true, 
    phoneNumber: '+18175698900', 
    countryIso2: 'US', 
    countryIso3: 'USA', 
    countryCode: '+1'
}
/*

Pythonプログラマーなら、 phonenumbersはあなたのライブラリです。以下はその例です:

import phonenumbers

my_number = phonenumbers.parse("+34911234567", "ES")
print(phonenumbers.is_valid_number(my_number)) # True

別の方法として、正規表現を使って独自のバリデータを作成することもできます。正規表現言語にもよりますが、次のようなものです:

^\+?[1-9]\d{1,14}$

次のPythonは、この正規表現を使って入力データを検証している:

import re

def validate_e164(phone_number):
    pattern = r'^\+?[1-9]\d{1,14}$'
    return bool(re.match(pattern, phone_number))

# Test the function
test_numbers = [
    "+14155552671",      # Valid E.164 number (US)
    "+442071838750",     # Valid E.164 number (UK)
    "+493012345678",     # Valid E.164 number (Germany)
    "+34916543210",      # Valid E.164 number (Spain)
    "1234567890",        # Invalid (missing +)
    "+1234567890123456"  # Invalid (too long)
]

for number in test_numbers:
    print(f"{number}: {validate_e164(number)}")

連絡を取る

ユーザーの入力をどのように検証していますか?どのライブラリを使うことをお勧めしますか?ぜひご意見をお聞かせください!ご参加は VonageコミュニティSlackまたは Xにメッセージください。

読んでくれてありがとう!

シェア:

https://a.storyblok.com/f/270183/405x400/2b811a162d/alvaro-navarro.jpg
Alvaro Navarroシニア・デベロッパー・アドボケイト

AlvaroはVonageの開発者支持者であり、ネットワークAPIに焦点を当てています。デベロッパーエクスペリエンス、API、オープンソースに情熱を注ぐ。仕事以外では、コミックショップを探検したり、SFやホラーフェスティバルに参加したり、有名な小さなプラスチックブロックで何かを作ったりしているところをよく見かける。