Geliştiriciler İçin E.164 Telefon Numarası Formatı

E.164 Nedir ve Neden Önemli?
Bir SMS göndermeyi, kayıt formunu doğrulamayı veya veritabanına telefon numarası kaydetmeyi denediyseniz format karmaşasıyla karşılaşmışsınızdır. Bir kullanıcı (555) 123 45 67 yazar, bir diğeri 0555 123 45 67 girer, üçüncüsü +90-555-123-45-67 yapıştırır. Hepsi aynı kişiyi işaret edebilir ama kodunuz üç farklı metin görür.
E.164 bu sorunu çözer. ITU (Uluslararası Telekomünikasyon Birliği) tarafından tanımlanan, telefon numaralarının dünya genelinde nasıl biçimlendirileceğini belirleyen uluslararası standarttır. Her numarayı E.164'e normalize ettiğinizde tek, kesin ve belirsizlik içermeyen bir gösterim elde edersiniz. Bu gösterim saklama, karşılaştırma ve mesajlaşma API'leri için idealdir.
Kimlik doğrulama, SMS doğrulama veya kişi özelliği geliştiren her yazılımcı için E.164, doğruluk kaynağı olarak kullanılması gereken formattır.
E.164 Numarasının Yapısı
E.164 numarasının katı bir biçimi vardır. Şöyle görünür:
+[ülke kodu][ulusal numara]
Birkaç somut örnek:
+905321234567(Türkiye)+14155552671(ABD)+442071838750(Birleşik Krallık)+8613800138000(Çin)
Kurallar basit ama tavizsizdir:
- Her zaman
+işaretiyle başlar. +işaretini ülke arama kodu izler (1 ila 3 basamak).- Ardından boşluk, tire, parantez veya baştaki sıfır olmadan abone numarası gelir.
- Toplam uzunluk (
+hariç) 15 basamağı asla geçmez.
Bu 15 basamak sınırı hatırlanması gereken en önemli kısıttır. Doğrudan ITU-T E.164 tavsiyesinden gelir.

E.164'ün İçermediği Şeyler
Bu nokta birçok geliştiriciyi yanıltır. E.164'te şunlara yer yoktur:
(),-veya boşluk gibi biçimlendirme karakterleri- Dahili numaralar (
x123gibi) - Numaradan önce çevirdiğiniz uluslararası çağrı öneki (
00veya011) - Ulusal ön ekler (birçok ülkenin yurt içinde kullandığı baştaki
0)
Yani yurt içinde 0532 123 45 67 olarak çevrilen bir Türk numarası, E.164'te +905321234567 olur. Baştaki 0 ulusal ön ektir ve düşürülüp yerine +90 ülke kodu gelir.
Geliştiriciler Neden E.164'te Standartlaşmalı?
Ham kullanıcı girdisini saklamak hata reçetesidir. Her şeyi E.164'e normalize etmenin kazançları şöyle.
1. Güvenilir tekilleştirme
İki kayıt da +905321234567 saklıyorsa, basit bir metin eşitlik kontrolüyle karşılaştırabilirsiniz. Normalize etmeden 532-123-4567 ve (532) 123 45 67 farklı müşteriler gibi görünür.
2. Mesajlaşma ve doğrulama API'leri bunu bekler
Çoğu SMS ağ geçidi ve doğrulama sağlayıcısı girdi olarak E.164 ister. Kötü biçimlendirilmiş numara gönderirseniz mesaj sessizce başarısız olur. Telefon tabanlı kimlik doğrulama kurarken sağlayıcınıza temiz E.164 numaraları vermek teslimat hatalarını ciddi biçimde azaltır. Bu, SMS doğrulama için çok önemlidir. Tek bir bozuk numara kodun hiç gelmemesi demektir.
3. Öngörülebilir saklama
Tek bir VARCHAR(16) sütunu gezegendeki her telefon numarasını karşılar. Format tahmini yok, dile özgü sütunlar yok.
4. Kolay uluslararasılaştırma
Ülke kodu gömülü olduğu için numaranın nereye ait olduğunu her zaman bilirsiniz. Ayrı bir ülke alanı olmadan bölgeye göre yönlendirme, faturalama veya filtreleme yapabilirsiniz.
Kodda E.164 Doğrulama ve Normalize Etme
Sıfırdan kendi regex'inizi yazıp işi bitmiş saymayın. Numara planları karmaşıktır ve değişir. Ülkeler yeni alan kodları ekler, basamak uzunluklarını değiştirir, aralıkları yeniden atar. Sabit bir regex zamanla bozulur.
Basit regex (yalnızca hızlı kontrol için)
^\+[1-9]\d{1,14}$
Bu temel biçimi kontrol eder: bir +, sıfır olmayan ilk basamak, sonra en fazla 14 basamak daha. İlk eleme filtresi olarak iyidir ama bir numaranın ülkesinde gerçekten geçerli veya atanabilir olduğunu doğrulamaz.
Doğru yol: bir kütüphane kullanın
Google'ın libphonenumber kütüphanesi fiili standarttır ve neredeyse her dile port edilmiştir:
- JavaScript / TypeScript:
libphonenumber-js - Python:
phonenumbers - Java:
libphonenumber - PHP:
giggsey/libphonenumber-for-php
JavaScript örneği:
import { parsePhoneNumberFromString } from 'libphonenumber-js'
function toE164(input, defaultCountry) {
const phone = parsePhoneNumberFromString(input, defaultCountry)
if (!phone || !phone.isValid()) {
return null
}
return phone.format('E.164') // "+905321234567"
}
toE164('0532 123 45 67', 'TR') // "+905321234567"
toE164('(415) 555-2671', 'US') // "+14155552671"
Python karşılığı:
import phonenumbers
def to_e164(raw, region):
parsed = phonenumbers.parse(raw, region)
if not phonenumbers.is_valid_number(parsed):
return None
return phonenumbers.format_number(
parsed, phonenumbers.PhoneNumberFormat.E164
)
defaultCountry / region parametresi önemlidir. Kullanıcı + ve ülke kodu olmadan numara gönderdiğinde kütüphane bu ipucuyla boşluğu doldurur. Bunu kullanıcının dilinden, IP konumundan veya formdaki ülke seçicisinden alın.

Sık Yapılan E.164 Hataları ve Kaçınma Yolları
+ işaretini tutarsız saklamak
Bir kural seçin ve her yerde uygulayın. E.164 teknik olarak + içerir. Onu saklayın. Bir serviste silip başka bir serviste tutmayın, yoksa karşılaştırmalarınız bozulur.
Baştaki sıfırları yanlış düşürmek
Ulusal ön ek 0, E.164'e dönüştürürken kaldırılmalıdır ama yalnızca ulusal kısımda. Onu asla meşru bir basamakla karıştırmayın. Kütüphaneler bunu doğru yapar, elle metin kesme genellikle yapmaz.
Tüm ülkelerin aynı uzunlukta olduğunu varsaymak
ABD numaraları ülke kodundan sonra 10 basamaktır. Bazı ülkeler 8, bazıları 9 veya daha fazla kullanır. Evrensel 15 basamak sınırı dışında bir uzunluk kontrolünü asla sabit kodlamayın.
Geçerli ile ulaşılabilir kavramlarını karıştırmak
E.164 doğrulaması bir numaranın iyi biçimlendirilmiş ve atanabilir olduğunu söyler. Hattın aktif olduğunu veya SMS alabildiğini söylemez. Kod hiç gelmiyorsa numara formatı yalnızca bir şüphelidir. OTP kodunuzun neden hiç gelmediğine dair rehberimiz diğer nedenleri anlatır.
Sunucu tarafında doğrulamayı atlamak
İstemci tarafı kontroller kullanıcı deneyimini iyileştirir ama güvenlik sağlamaz. Herhangi bir şeyi saklamadan veya göndermeden önce her zaman sunucuda yeniden doğrulayın ve normalize edin.
SMS Doğrulama Akışlarında E.164
Telefon doğrulaması, E.164'ün gerçek değerini gösterdiği yerdir. Tipik akış şöyledir:
- Kullanıcı numarayı herhangi bir formatta girer.
- Ön yüzünüz ülke seçici gösterir ve ilk ayrıştırmayı yapar.
- Arka ucunuz libphonenumber ile E.164'e normalize eder.
- E.164 metnini saklar ve SMS sağlayıcınıza iletirsiniz.
- Sağlayıcı tam o numaraya tek kullanımlık kod teslim eder.
Kod göndermek yerine almak için numara kiraladığınızda da aynı standart geçerlidir. Sanal telefon numarası servisiyle aldığınız numaralar zaten temiz uluslararası formattadır. Bu da onları test paketlerinize ve otomasyonlarınıza kolayca eklemenizi sağlar.
Bunu bir uygulamaya bağlıyorsanız SMS doğrulama API'si geliştirici rehberi istek ve yanıt yapılarını anlatır, API dokümantasyonu ise numaraların her uç noktada nasıl temsil edildiğini gösterir.
Hızlı Başvuru: E.164 Kuralları
| Kural | Değer |
|---|---|
| Baştaki karakter | + |
| Ülke kodu uzunluğu | 1 ila 3 basamak |
| Maksimum toplam basamak | 15 (+ hariç) |
+ sonrası ilk basamak | 1 ila 9 (asla 0) |
| İzin verilen karakterler | yalnızca basamaklar |
| Biçimlendirme sembolleri | yok |
Sıkça Sorulan Sorular
+ işareti E.164 numarasının parçası mı?
Evet. Kurallı E.164 gösterimi baştaki + işaretini içerir. Saklarken tutarlılık için koruyun.
E.164 numaralarının dahili numarası olabilir mi? Hayır. Dahili numaralar E.164 kapsamı dışındadır. Gerekiyorsa dahili numarayı ayrı bir alanda saklayın.
Maksimum E.164 uzunluğu nedir?
+ hariç 15 basamak. Bu ITU'dan gelen kesin bir sınırdır.
E.164 bir numaranın SMS alabildiğini söyler mi? Hayır. Yalnızca formatın geçerli ve aralığın atanabilir olduğunu doğrular. Teslim edilebilirlik ayrı bir konudur.
Ön yüzde mi arka uçta mı doğrulamalıyım? İkisinde de. Ön yüz akıcı deneyim için, arka uç doğruluk ve güvenlik için.
SMSBulk ile Başlayın
Temiz telefon numarası işleme, temiz numaralarla başlar. SMSBulk size 200'den fazla ülkeden SMS doğrulama numaraları sunar. Hepsi standart uluslararası formatta teslim edilir. Böylece WhatsApp, Telegram, Google ve yüzlerce başka servis için bozuk girdilerle uğraşmadan kod alırsınız. Geliştiriciler her şeyi belgelenmiş API'miz üzerinden bağlayabilir, gezginler ise aynı cüzdanda bir numarayı SMSBulk seyahat eSIM'iyle eşleştirebilir. Hesap oluşturun, bakiye yükleyin ve gerçekten çalışan doğrulama akışları kurmaya başlayın.
Hesaplarınızı kolayca doğrulamaya hazır mısınız?
200+ ülkeden 30 saniyenin altında anlık SMS kodları alın.
